Ошибка атрибута в /admin/pizza/topping/add/ объект ‘NoneType’ не имеет атрибута ‘attname’

#django

#django

Вопрос:

Когда я пытаюсь добавить записи с сервера администратора, я получаю указанную выше ошибку

 class Pizza(models.Model):
    name_text = models.CharField(max_length=200)

    def __init__(self):
        self.name_text

class Topping(models.Model):
    name = models.ForeignKey(Pizza, on_delete=models.CASCADE)
    text = models.CharField(max_length=100)

    def __init__(self):
        self.text
 

Ответ №1:

Не переопределяйте __init__ метод моделей Django, особенно таким образом, чтобы пропустить вызов суперкласса __init__ .

 class Pizza(models.Model):
    name_text = models.CharField(max_length=200)


class Topping(models.Model):
    name = models.ForeignKey(Pizza, on_delete=models.CASCADE)
    text = models.CharField(max_length=100)

 

все в порядке.

Комментарии:

1. Мои предыдущие модели, похоже, работали с этим методом. Но вы правы, удалив его, проблема решена. Спасибо

Ответ №2:

Похоже, вы использовали __init__ вместо __str__ . __str__ используется для предоставления строкового представления объекта, __init__ используется для инициализации объекта. Вам также необходимо вернуть результат:

 class Pizza(models.Model):
    name_text = models.CharField(max_length=200)

    def __str__(self):
        return self.name_text

class Topping(models.Model):
    name = models.ForeignKey(Pizza, on_delete=models.CASCADE)
    text = models.CharField(max_length=100)

    def __str__(self):
        return self.text