我正在尝试在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关系,我有点困惑,而且我没有找到解决问题的方法。
你有什么想法吗?
答案 0 :(得分:2)
在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
答案 1 :(得分:1)
班级PerfumeBrand
从不定义变量person
,只定义name
。