以下是我的模型的简化版本:
class Group(models.Model):
creator = models.ForeignKey(User, related_name='group_creator')
members = models.ManyToManyField(User, through='Membership')
def clean(self):
if self.creator not in self.members.all():
raise ValidationError('Creator should be part of this group.')
当我在我的模型的新实例上执行full_clean()时,它会引发此异常。
ValueError: 'Group' instance needs to have a primary key value before a many-to-many relationship can be used.
我知道它来自我的clean()方法,但我无法弄清楚为什么会出现这个错误。我看到人们和我有同样的麻烦,但从来没有在他们自己的模型中。
知道如何解决这个问题吗? 我知道,为我的英语道歉,这很糟糕。也许这就是为什么我无法解决这个问题。
答案 0 :(得分:0)
当对象尚未保存时,您无法检查self.members.all()
。它需要一个主键才能在连接表中查找与自身的关系。
您应该检查的是self.cleaned_data['members']
。