我有一個ManyToManyField類似這樣的一個模型(模型字有語言,太):Django的多對多模型驗證
class Sentence(models.Model):
words = models.ManyToManyField(Word)
language = models.ForeignKey(Language)
def clean(self):
for word in self.words.all():
if word.language_id != self.language_id:
raise ValidationError('One of the words has a false language')
當試圖添加一個新的句子(例如,通過Django管理)我得到'Sentence' instance needs to have a primary key value before a many-to-many relationship can be used
。這意味着在保存之前我無法訪問self.words,但這正是我想要做的。有沒有辦法解決這個問題,所以你可以驗證這個模型呢?我真的想直接驗證模型的字段。
我發現了很多關於這個異常的問題,但是我找不到對我的問題的幫助。我將不勝感激任何建議!
如果你想創建一個Word,你會如何驗證它是否與一個句子相關聯?它的模型定義中沒有「句子」字段。 – johnklawlor
並非所有人都使用表單。我認爲這在Django中是一個巨大的缺陷。有沒有人有更好的答案? –