"<Story: title>"需要具有字段"id"的值,然后才能使用此多对多关系



我添加了代码,因此用户可以将故事最多与 2 种类型联系起来,当我尝试保存故事时,它会带来标题错误。

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)

在设置多对多关系之前,需要先保存这两个对象才能获得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()

相关内容

最新更新