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