简体   繁体   English

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

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

I am trying to define some ManyToMany relations in Django, but I have an error when I try to create related objects.我试图在 Django 中定义一些 ManyToMany 关系,但是当我尝试创建相关对象时出现错误。

My models.py :我的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)

The problem is that when I try to save a PerfumeBrand object in my database, I get this error :问题是,当我尝试在我的数据库中保存 PerfumeBrand 对象时,出现此错误:

AttributeError at /admin/visualize/perfumebrand/add/ /admin/visualize/perfumebrand/add/ 处的属性错误

'PerfumeBrand' object has no attribute 'person' 'PerfumeBrand' 对象没有属性 'person'

I tried to save both in code and admin panel, the same error occurs.我试图同时保存在代码和管理面板中,发生了同样的错误。

As this is the first time I need a ManyToMany relation in a Django project, I am a bit confused, and I didn't find any solution to my problem.由于这是我第一次在 Django 项目中需要多对多关系,我有点困惑,我没有找到任何解决我问题的方法。

Have you any idea ?你有什么想法吗?

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

On the PerfumeBrand object, you have declared thisPerfumeBrand对象上,您已经声明了这个

def __str__(self):
    return self.person.first_name + ' ' + self.person.last_name.upper() + ': ' + self.name

But person is not an attribute of PerfumeBrand .person不是PerfumeBrand的属性。 That function should be under the Person class (with some changes before) and you should use something like the following in the PerfumeBrand class:该函数应该在Person类下(之前有一些更改),并且您应该在PerfumeBrand类中使用如下所示的内容:

def __str__(self):
    return self.name

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

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