我有两种基于以下型号的色拉剂:
class LanguageSerializer(serializers.ModelSerializer):
class Meta:
model = Language
fields = '__all__'
class GameSerializer(serializers.ModelSerializer):
language = LanguageSerializer()
class Meta:
model = Game
fields = '__all__'
class Game(models.Model):
language = models.ForeignKey(Language)
class Language(models.Model):
name = models.CharField(max_length=50, unique=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
当我试图创建一个新的Game
实体时,我将这个游戏的Language id
作为参数传递。出于某些原因,DRF希望该语言作为dictionary
而不是integer
来传递。错误如下:
向DRF指示的正确方法是什么,以创建一个基于所提供的Game
属性的Language
属性?在
一种解决方案是创建一个单独的序列化程序,它不包含有关语言的所有详细信息。您可以创建使用^{} 的单独序列化程序
您可以在返回/列出对象时使用普通的
GameSerializer
,然后在创建游戏时使用ShallowGameSerializer
,允许您只提供id相关问题 更多 >
编程相关推荐