python - 如何使用 ModelSerializer 显示所有模型字段?

标签 python django django-models django-rest-framework django-serializer

models.py:

class Car():
    producer = models.ForeignKey(Producer, blank=True, null=True,)
    color = models.CharField()
    car_model = models.CharField()
    doors = models.CharField()

serializers.py:

class CarSerializer(ModelSerializer):

    class Meta:
        model = Car
        fields = Car._meta.get_all_field_names()

所以,我想在这里使用所有字段。但我有一个错误:

字段名称 producer_id 对模型 Car 无效。

如何解决这个问题?

谢谢!

最佳答案

根据Django REST Framework's Documentation on ModelSerializers :

By default, all the model fields on the class will be mapped to a corresponding serializer fields.

这与 Django's ModelForms 不同,这需要您 specify the special attribute '__all__'利用所有模型字段。因此,只需声明模型即可。

class CarSerializer(ModelSerializer):
    class Meta:
        model = Car

更新(版本 >= 3.5)

上述行为在 3.3 版中已被弃用,自 3.5 版起被禁止。

It is now mandatory使用特殊属性 '__all__' 使用 Django REST Framework 中的所有字段,与 Django Forms 相同:

Failing to set either fields or exclude raised a pending deprecation warning in version 3.3 and raised a deprecation warning in 3.4. Its usage is now mandatory.

所以现在它必须是:

class CarSerializer(ModelSerializer):
    class Meta:
        model = Car
        fields = '__all__'

关于python - 如何使用 ModelSerializer 显示所有模型字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30274591/

相关文章:

python - Django Serializer 仅为父类对象返回 JSON 并保留子对象相同?

javascript - 当我在子页面时没有激活导航父页面

带有文件错误的 Django REST Framework POST 数据(使用 ModelResource)

python - Admin/AdminInline 中带有非模型字段的 Django 自定义表单

python - Django 查询,平均计数不同

python - 为什么菜单没有显示在我的 Tkinter GUI 上?

python - 如何从最接近的 10 倍数中减去总计

python - Django 中的计划表更新

python - Excel不同格式的日期如何在Pandas数据框中排序

python - 获取转换为列表的两个组合 Django 查询集中的最新文章