คำถามติดแท็ก django-signals

10
TransactionManagementError“ คุณไม่สามารถดำเนินการค้นหาจนสิ้นสุดบล็อก 'atomic'” ในขณะที่ใช้สัญญาณ แต่เฉพาะในระหว่างการทดสอบหน่วย
ฉันได้รับ TransactionManagementError เมื่อพยายามบันทึกตัวอย่างรุ่นผู้ใช้ Django และในสัญญาณหลังโพสต์บันทึกของฉันฉันบันทึกบางรุ่นที่มีผู้ใช้เป็นคีย์ต่างประเทศ บริบทและข้อผิดพลาดค่อนข้างคล้ายกับคำถามนี้ django TransactionManagementError เมื่อใช้สัญญาณ แต่ในกรณีนี้ข้อผิดพลาดเกิดขึ้นเท่านั้นในขณะที่การทดสอบหน่วย มันทำงานได้ดีในการทดสอบด้วยตนเอง แต่การทดสอบหน่วยล้มเหลว มีอะไรที่ฉันขาดหายไปไหม นี่คือตัวอย่างโค้ด: views.py @csrf_exempt def mobileRegister(request): if request.method == 'GET': response = {"error": "GET request not accepted!!"} return HttpResponse(json.dumps(response), content_type="application/json",status=500) elif request.method == 'POST': postdata = json.loads(request.body) try: # Get POST data which is to be used to …

5
สัญญาณ Django เทียบกับวิธีการบันทึกที่ลบล้าง
ฉันมีปัญหาในการคาดเดาสิ่งนี้ ตอนนี้ฉันมีโมเดลที่มีลักษณะเช่นนี้: def Review(models.Model) ...fields... overall_score = models.FloatField(blank=True) def Score(models.Model) review = models.ForeignKey(Review) question = models.TextField() grade = models.IntegerField() การตรวจสอบมี "คะแนน" หลายแบบโดย overall_score คือค่าเฉลี่ยของคะแนน เมื่อมีการบันทึกบทวิจารณ์หรือคะแนนฉันจำเป็นต้องคำนวณค่าเฉลี่ย Overall_score ใหม่ ตอนนี้ฉันใช้วิธีบันทึกที่ถูกลบล้าง การใช้เครื่องส่งสัญญาณของ Django จะมีประโยชน์หรือไม่?

8
สถานที่ที่เหมาะสมในการเก็บไฟล์ Signal.py ของฉันในโครงการ Django
จากเอกสารของ Django ที่ฉันกำลังอ่านดูเหมือนว่าsignals.pyในโฟลเดอร์แอพจะเป็นจุดเริ่มต้นที่ดี แต่ปัญหาที่ฉันพบคือเมื่อฉันสร้างสัญญาณpre_saveและฉันพยายามนำเข้าคลาสจากโมเดลมันขัดแย้งกับimportในแบบจำลองของฉัน # models.py from django.contrib.auth.models import User from django.db import models from django.utils.translation import gettext as _ from signals import * class Comm_Queue(CommunicatorAbstract): queue_statuses = ( ('P', _('Pending')), ('S', _('Sent')), ('E', _('Error')), ('R', _('Rejected')), ) status = models.CharField(max_length=10, db_index=True, default='P') is_html = models.BooleanField(default=False) language = models.CharField(max_length=6, choices=settings.LANGUAGES) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.