我正在尝试在Django中定义一些ManyToMany关系,但是在尝试创建相关对象时出现错误。
我的models.py:
class PerfumeBrand(models.Model):
class Meta:
verbose_name = "Marque de parfum"
verbose_name_plural = "Marques de parfum"
name = models.CharField(max_length=32)
def __str__(self):
return self.person.first_name + ' ' + self.person.last_name.upper() + ': ' + self.name
class Person(models.Model):
class Meta:
verbose_name = "Personne"
verbose_name_plural = "Personnes"
first_name = models.CharField(max_length=32, )
last_name = models.CharField(max_length=32)
email = models.EmailField(unique=True)
# Here is the ManyToMany relation
perfume_brands = models.ManyToManyField(PerfumeBrand)
问题是,当我尝试在数据库中保存PerfumeBrand对象时,出现此错误:
/ admin / visualize / perfumebrand / add /中的AttributeError
'PerfumeBrand'对象没有属性'person'
我试图同时保存在代码和管理面板中,发生相同的错误。
因为这是我在Django项目中第一次需要ManyToMany关系,所以我有点困惑,我没有找到解决问题的方法。
你有什么主意吗?
最佳答案
在PerfumeBrand
对象上,您已经声明了
def __str__(self):
return self.person.first_name + ' ' + self.person.last_name.upper() + ': ' + self.name
但是
person
不是PerfumeBrand
的属性。该函数应该在Person
类下(之前有一些更改),并且您应该在PerfumeBrand
类中使用类似以下的内容:def __str__(self):
return self.name
关于python - Django:ManyToMany关系错误(对象没有属性),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41611065/