我正在為一些 api 呼叫撰寫測驗,我得到的問題是我無法弄清楚如何在 Django 中分配多對多變數(主題)。
模型.py
class Subject(BaseModel):
id = models.AutoField(primary_key=True)
name = models.TextField(null=False, blank=False)
answers = models.ManyToManyField("registration.Answer", through="AnswerSubject")
class Answer(BaseModel):
id = models.AutoField(primary_key=True)
text = models.TextField(null=False, blank=False)
subjects = models.ManyToManyField("subjects.Subject", through="subjects.AnswerSubject")
測驗.py
def tets_get_answer:
Answer.objects.create(
text=f'{"test answer"}',
subjects = f{"test subject"} # the error is here, how do I assign subjects?
),
........
這是我得到的錯誤:
E TypeError: Direct assignment to the forward side of a many-to-many set is prohibited. Use subjects.set() instead.
Any help is appreciated
uj5u.com熱心網友回復:
您創建一個Subject模型,然后設定它:
def tets_get_answer(self):
answer = Answer.objects.create(
text='test answer',
# no subjects
# …
)
subject = Subject.objects.create(
name='test subject'
)
answer.subjects.add(subject)
然而,沒有理由定義ManyToManyField兩次:如果你在 Django 中定義了一個關系,Django 也會自動定義一個反向的關系。related_name=…您可以使用引數 [Django-doc]指定該反向關系的名稱:
class Subject(BaseModel):
name = models.TextField()
# no answers
class Answer(BaseModel):
text = models.TextField()
subjects = models.ManyToManyField(
Subject,
through='subjects.AnswerSubject',
related_name='answers'
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/434707.html
標籤:Python django django模型 django 测试 django 测试
上一篇:DjangoEncryptFileFieldwithFernetobjecthasnoattribute'_committed'發生
