【发布时间】:2018-08-21 10:43:33
【问题描述】:
使用 Django REST Framework 中的 HyperlinkedModelSerializer 时,id 字段默认不包含在 fields 中。这个question 的答案很好地解释了这一点。
但是我有一个问题想以特定方式解决。
我有一个带有自定义 ID 和几十个其他字段的模型:
class Foo(models.Model):
id = models.IntegerField(primary_key=True)
# 20-30 fields
在serializers.py 我想包含模型中的所有字段:
class FooSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Foo
fields = '__all__'
但这不包括字段id。定义 id = serializers.ReadOnlyField() 也对我没有帮助,因为 id 应该是可编辑的。
像这样手动指定所有字段:
fields = ('id', # all other fields)
这将是我试图规避的解决方案,因为模型类有很多字段,并且它们将来可能会发生变化。
添加字段id 是否有很好的可能性?也许覆盖__init__ 方法?
【问题讨论】:
-
你为什么不用
class FooSerializer(serializers.ModelSerializer) -
@argo 因为我需要明确的
HyperlinkedModelSerializer。
标签: python django django-rest-framework