繁体   English   中英

Django:ManyToMany 关系错误(对象没有属性)

[英]Django : ManyToMany relation error ( object has no attribute)

我试图在 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/ 处的属性错误

'PerfumeBrand' 对象没有属性 'person'

我试图同时保存在代码和管理面板中,发生了同样的错误。

由于这是我第一次在 Django 项目中需要多对多关系,我有点困惑,我没有找到任何解决我问题的方法。

你有什么想法吗?

PerfumeBrand类从不定义变量person ,只定义name

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM