Как использовать id в моделях django
хочу использовать self.id т.е. обращаться к колонке с id, как к базам данных, но компилятор не видит такой атрибут.
class Author(models.Model):
first_name = models.CharField(max_length=100, help_text="Введите имя автора", verbose_name="Имя автора")
last_name = models.CharField(max_length=100, help_text="Введите фамилию автора", verbose_name="Фамилия автора")
date_of_birth = models.DateField(help_text="Введите дату рождения", verbose_name="Дата рождения",
null=True, blank=True)
about = models.TextField(help_text="Введите сведения об авторе", verbose_name="Сведения об авторе")
photo = models.ImageField(upload_to='images', help_text="Введите фото автора", verbose_name="Фото автора",
null=True, blank=True)
def __str__(self):
return self.last_name
Обратите внимание на возврат 2ух последних функций (Book), где используется self.id
и self.author.all()
class Book(models.Model):
title = models.CharField(max_length=200, help_text="Введите название книги", verbose_name="Название книги")
genre = models.ForeignKey('genre', on_delete=models.CASCADE, help_text="Введите жанр для книги",
verbose_name="Жанр книги", null=True)
language = models.ForeignKey('Language', on_delete=models.CASCADE, help_text="Введите язык книги",
verbose_name="Язык книги", null=True)
publisher = models.ForeignKey('Publisher', on_delete=models.CASCADE, help_text="Выберите издательство",
verbose_name="Издательство", null=True)
year = models.CharField(max_length=4, help_text="Введите год издания", verbose_name="Год издания")
author = models.ManyToManyField('Author', help_text="Выберите автора (авторов) книги",
verbose_name="Автор (авторы) книги")
summary = models.TextField(max_length=1000, help_text="Введите краткое описание книги",
verbose_name="Аннотация книги")
isbn = models.CharField(max_length=13, help_text="Должно содержать 13 символов", verbose_name="ISBN книги")
price = models.DecimalField(decimal_places=2, max_digits=7, help_text="Введите цену книги",
verbose_name="Цена (руб.)")
photo = models.ImageField(upload_to='images', help_text="Введите изображение обложки",
verbose_name="Изображение обложки")
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('book-detail', args=[str(self.id)])
def display_author(self):
return ', '.join([author.last_name for author in self.author.all()])
display_author.short_description = 'Авторы'
В self.author.all()
ожидается возврат через связь всех строк из модели (колонки author), но компилятор подчеркивает их желтым:
Unresolved attribute reference 'all' for class 'ManyToManyField'
При этом я могу использовать self.save()
. Я не понимаю , как это работает, прошу помощи
Почему я не могу использовать атрибут id и как обратиться к author