""должно иметь значение для поля" id ", прежде чем можно будет использовать это отношение многие ко многим - PullRequest
1 голос
/ 04 октября 2019

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

class Story(models.Model):
    title = models.CharField(max_length=255)
    genre = models.ManyToManyField(Genre)
    alias = models.CharField(max_length=255, null=True, blank=True)

    def save(self, *args, **kwargs):
        self.alias = slugify(self.title, 'ru')

        return super(Story, self).save(*args, **kwargs)

    def clean(self, *args, **kwargs):
        if self.genre.count() > 2:
            raise ValidationError('Error')
        super(Story, self).clean(*args, **kwargs)

1 Ответ

1 голос
/ 05 октября 2019

Оба объекта должны быть сохранены в первую очередь, чтобы получить значения id, прежде чем можно будет установить отношение многие ко многим. Это связано с тем, что отношение «многие ко многим» хранится с использованием третьей таблицы базы данных, которая содержит все пары (story.id, genre.id). Вы хотите что-то вроде:

my_genre = Genre(name='Fable')
my_genre.save()
my_story = Story(title='The Tortoise and the Hare')
my_story.save()

# now that my_genre.id and my_story.id are defined, the many-to-many relationship can be set:
my_story.genre.set([my_genre])
my_story.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...