cez*_*zar 4 python django django-rest-framework
使用HyperlinkedModelSerializerfrom Django REST Framework 时,默认情况下id不包含该字段fields。这个问题有一个答案可以很好地解释这一点。
但是,我有一个问题想以特定方式解决。
我有一个带有自定义 ID 和其他几十个字段的模型:
class Foo(models.Model):
id = models.IntegerField(primary_key=True)
# 20-30 fields
Run Code Online (Sandbox Code Playgroud)
在serializers.py我想包括模型中的所有字段:
class FooSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Foo
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
但是,这不包括 field id。定义id = serializers.ReadOnlyField()对我也没有帮助,因为id应该是可编辑的。
像这样手动指定所有字段:
fields = ('id', # all other fields)
Run Code Online (Sandbox Code Playgroud)
将是我试图规避的解决方案,因为模型类有很多字段,它们将来可能会发生变化。
是否有一种优雅的可能性来添加该字段id?也许覆盖该__init__方法?
id在FooSerializer序列化器中添加属性为:
class FooSerializer(serializers.HyperlinkedModelSerializer):
id = serializers.IntegerField(read_only=True)
class Meta:
model = Foo
fields = '__all__'Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1633 次 |
| 最近记录: |