我正在尝试在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/

10-09 00:34