有一个错误表示'语法无效' 但我是django和python的新手...... 这段代码中的错误是什么? 第一个if-block效果很好 第二个没有......
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
is_joined = models.BooleanField(default = False) #if True, joined, else wish_member
is_master = models.BooleanField(default = False)
def __str__(self):
if(self.is_joined):
return self.person.name + " is a member in Group " + self.group.name
return self.person.name + " wishes to join in Group " + self.group.name
def validate_unique(self, *args, **kwargs):
#super(Person, self.person).validate_unique(*args, **kwargs)
#tests if there is already the same person in the same group.
if(self.__class__.objects.filter(person_id = self.person.id, group_id = self.group.id,).exists()):
raise ValidationError(
{
NON_FIELD_ERRORS:
('The person already exists.',)
}
)
elif(self.__class__objects.filter(is_master = True, group_id = self.group.id,).exists()):
raise ValidationError(
{
NON_FIELD_ERRORS:
('The master already exists.')
})
编辑:注意到点丢失了。在那里找到它的信用卡。错误发生在:
elif(self.__class__.objects.filter(is_master = True, group_id = self.group.id,).exists()):
答案 0 :(得分:1)
您在elif语句中遗漏了__class__
和__objects__
之间的点。它应该是:
elif(self.__class__.objects.filter(is_master = True, group_id = self.group.id,).exists()):
但是,这会给你一个属性错误,你说你有语法错误,所以可能还有其他问题我没有发现。
答案 1 :(得分:1)
您可以使用unique_together
制作一组独特的字段。在您的情况下,您指定
class Membership(models.Model):
....
class Meta:
unique_together = (
("person", "group"),
("is_master", "group"),
)
这将确保person
和group
以及is_master
和group
在一起是唯一的。 Read more information here