2017-01-12 7 views
1

Я пытаюсь определить некоторые отношения ManyToMany в Django, но у меня есть ошибка при попытке создать связанные объекты.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 в моей базе данных, я получаю эту ошибку:

AttributeError в/админ/визуализации/perfumebrand/добавить/

объект 'PerfumeBrand' не имеет атрибута 'человек'

Я попытался сохранить как в коде, так и в панели администратора, происходит такая же ошибка.

Поскольку это первый раз, когда мне нужно отношение ManyToMany в проекте Django, я немного смущен, и я не нашел решения для моей проблемы.

Есть ли у вас какие-либо идеи?

+0

Действительно, PerfumeBrand не имеет атрибут 'person'. Итак, почему вы используете 'self.person' в методе' __unicode__'? –

ответ

1

Класс PerfumeBrand никогда не определяет переменную person, только name.

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

Как бог, я перевернул свое отношение и полностью забыл удалить имя, приписываемое на странице. Большое спасибо! – Korbraan

 Смежные вопросы

  • Нет связанных вопросов^_^