我将使用Django Rest框架创建一个REST API,不能使用任何其他库或插件。过去几天中,我一直存在一个问题,而且我很难解决。
在我的serializer.py文件中,我有以下代码:
class BookSerializer(serializers.HyperlinkedModelSerializer):
owner = serializers.ReadOnlyField(source = 'owner.username')
genres = serializers.ChoiceField(choices=Genre.objects.values_list())
# genres = GenreSerializer()
class Meta:
model = VideoGame
fields = ('title', 'description', 'brief', 'genres', 'owner')
我希望当用户访问GUI并尝试创建新书时,他们可以从一个ChoiceField中选择流派,然后将其翻译为其ID。如果用户通过rest API访问,则必须输入ID。
当数据库为空时,我能够成功将新书发布到服务器并使用ChoiceField选择下拉菜单。但是当数据库有条目时,我会收到以下错误。当我使用序列化程序替换ChoiceField时,这个问题得到了解决。但是,我只留下一个输入字段而不是ChoiceField。有人知道如何解决这个问题吗?
TypeError at /book/
<Genre: Genre object> is not JSON serializable
activity_type = serializers.ChoiceField( choices=ActivityType.objects.filter( primary_activity=True).values_list("id", "name") )
- Karina Klinkevičiūtė