Django rest framework 如何将多个字段保存为值而不是id
我有下面的模型和连载器,在电影和流派之间有很多关系。但是,当我使用api为电影选择类型时,电影将使用类型id而不是类型名称保存。如何使用流派名称而不是id进行保存 型号。py:Django rest framework 如何将多个字段保存为值而不是id,django-rest-framework,Django Rest Framework,我有下面的模型和连载器,在电影和流派之间有很多关系。但是,当我使用api为电影选择类型时,电影将使用类型id而不是类型名称保存。如何使用流派名称而不是id进行保存 型号。py: class Genre(models.Model): genre = models.CharField(max_length=50, unique=True) def __str__(self): return self.genre class Movie(models.Model):
class Genre(models.Model):
genre = models.CharField(max_length=50, unique=True)
def __str__(self):
return self.genre
class Movie(models.Model):
name = models.CharField(max_length=50)
release_date = models.DateField()
genre = models.ManyToManyField(Genre, related_name='movie')
序列化程序.py
class GenreSerializer(ModelSerializer):
class Meta:
model = Genre
fields = (genre, )
class MovieSerializer(ModelSerializer):
class Meta:
model = Movie
fields = ('id', 'name', 'release_date', 'genre', )
我通过API插入了以下3种类型:
1.恐怖
2.喜剧片
3.动画
当我用类型恐怖和喜剧保存一部名为“恐怖电影”的电影时,它会用类型ID而不是它们的值(即恐怖和喜剧)保存如下:
使用下面的api列出所有保存的电影时,显示如下
/api/电影
{
"id": 1
"name": "Scary Movie",
"release date": 2000-07-13,
"genre": [
1,
2
]
}
如何使用流派名称而不是流派id保存电影?您可以使用如下嵌套序列化程序:
class GenreSerializer(ModelSerializer):
class Meta:
model = Genre
fields = (genre,)
class MovieSerializer(ModelSerializer):
genre = GenreSerializer(many=True)
class Meta:
model = Movie
fields = ('id', 'name', 'release_date', 'genre')
这将导致:
[
{
"id": 1
"name": "Scary Movie",
"release date": 2000-07-13,
"genre": [
{
"genre": "Horror"
},
{
"genre": "Comedy"
}
]
}, ...
]