Django:如何将数据保存到ManyToManyField?
我有一个关于以下模型的问题。我想从views.py中填充Django:如何将数据保存到ManyToManyField?,django,django-models,Django,Django Models,我有一个关于以下模型的问题。我想从views.py中填充ManyToManyField,而不是从Admin中填充 但是如何将数据添加到genres字段,即ManyToManyField 视图.py content = Movie_Info(id = m_id, title = data[0].get('title'), overview = data[0].get('overview'),
ManyToManyField
,而不是从Admin中填充
但是如何将数据添加到genres
字段,即ManyToManyField
视图.py
content = Movie_Info(id = m_id,
title = data[0].get('title'),
overview = data[0].get('overview'),
release_date = data[0].get('release_date'),
)
content.save()
class Movie_Info_genre(models.Model):
genre = models.CharField(max_length=100)
class Movie_Info(models.Model):
id = models.IntegerField(primary_key=True)
title = models.CharField(max_length=100, blank=True, null=True)
overview = models.TextField(blank=True, null=True)
release_date = models.CharField(max_length=10, blank=True, null=True)
genres = models.ManyToManyField(Movie_Info_genre)
型号.py
content = Movie_Info(id = m_id,
title = data[0].get('title'),
overview = data[0].get('overview'),
release_date = data[0].get('release_date'),
)
content.save()
class Movie_Info_genre(models.Model):
genre = models.CharField(max_length=100)
class Movie_Info(models.Model):
id = models.IntegerField(primary_key=True)
title = models.CharField(max_length=100, blank=True, null=True)
overview = models.TextField(blank=True, null=True)
release_date = models.CharField(max_length=10, blank=True, null=True)
genres = models.ManyToManyField(Movie_Info_genre)
使用:
与修改其他字段不同,在执行此操作之前,两个模型都必须存在于数据库中,因此在添加多对多关系之前,必须调用
save
。因为add会立即影响数据库,所以您不需要事后保存。不相关的风格建议:在Python/Django中,强烈建议命名类MovieInfo
或MovieInfoGenre
(或者干脆MovieGenre
甚至Genre
),而不是在其中使用下划线。此外,这可能是一个非常严重的格式问题,但在制作内容时,缩进量非常大另外,release\u date
应该是DateField
@Dougal,谢谢你的建议。关于缩进,我正在使用一个插件来为我实现;)另外,模型中不需要特殊的“id”字段。Django会自动为你做。谢谢,我还有一个问题要问。流派应该是独一无二的。对于以下代码,如果添加两次相同的类型,则会引发错误。所以我想知道,我是否应该抓住这个错误并做些什么。或者有没有更好的方法来解决这个问题?改用“添加会立即影响数据库”这正是我想要的答案,谢谢