Django Rest Framework:将模型对象编号转换为其对应的字符串
Django Rest Framework: Converting a model object number into its corresponding string
我有一个包含两个不同模型的应用程序,它们通过多对多关系关联如下:
from django.db import models
class Genres(models.Model):
genre = models.CharField(max_length = 128, unique = True)
class Movies(models.Model):
popularity = models.FloatField()
director = models.CharField(max_length = 128)
genre = models.ManyToManyField(Genres, related_name = 'movies')
imdb_score = models.FloatField()
movie_name = models.CharField(max_length = 500)
serializers.py
from shoppy.models import Movies, Genres
from rest_framework import serializers
class GenresSerializer(serializers.ModelSerializer):
class Meta:
model = Genres
fields = ('genre',)
class MoviesSerializer(serializers.ModelSerializer):
#genre = serializers.CharField(max_length = 128, choices = Movies.GENRE_CHOICES)
class Meta:
model = Movies
fields = ('popularity', 'director', 'imdb_score', 'genre',
'movie_name')
这是我在 http://localhost:8000/movies/
的 API 端点表单的样子:
现在,不同的 genres
不是作为 Genres
对象编号的实例出现,而是如何使它们显示为对应于每个对象编号的实际字符串?例如,Genres object-1
对应于 Comedy
,这就是我想要在 API 端点形式中显示的内容,以使流派选择更易于阅读。
有什么方法可以做这样的事情?
您需要在 Genres
模型中实施 __str__
方法。
class Genres(models.Model):
genre = models.CharField(max_length = 128, unique = True)
def __str__(self):
return '%s'%self.genre
我有一个包含两个不同模型的应用程序,它们通过多对多关系关联如下:
from django.db import models
class Genres(models.Model):
genre = models.CharField(max_length = 128, unique = True)
class Movies(models.Model):
popularity = models.FloatField()
director = models.CharField(max_length = 128)
genre = models.ManyToManyField(Genres, related_name = 'movies')
imdb_score = models.FloatField()
movie_name = models.CharField(max_length = 500)
serializers.py
from shoppy.models import Movies, Genres
from rest_framework import serializers
class GenresSerializer(serializers.ModelSerializer):
class Meta:
model = Genres
fields = ('genre',)
class MoviesSerializer(serializers.ModelSerializer):
#genre = serializers.CharField(max_length = 128, choices = Movies.GENRE_CHOICES)
class Meta:
model = Movies
fields = ('popularity', 'director', 'imdb_score', 'genre',
'movie_name')
这是我在 http://localhost:8000/movies/
的 API 端点表单的样子:
现在,不同的 genres
不是作为 Genres
对象编号的实例出现,而是如何使它们显示为对应于每个对象编号的实际字符串?例如,Genres object-1
对应于 Comedy
,这就是我想要在 API 端点形式中显示的内容,以使流派选择更易于阅读。
有什么方法可以做这样的事情?
您需要在 Genres
模型中实施 __str__
方法。
class Genres(models.Model):
genre = models.CharField(max_length = 128, unique = True)
def __str__(self):
return '%s'%self.genre