我有一个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中是一个巨大的缺陷。有没有人有更好的答案? –