DRF序列化问题:结合django-simple-history和django-polymorphic

时间:2019-06-23 12:51:03

标签: python django django-rest-framework django-serializer django-polymorphic

我使用的是常规Django模型,但现在开始使用django-polymorphicrest-polymorphic将多态模型合并到我的DRF REST API项目中。我还使用django-simple-history来跟踪数据库中条目的更改。对于没有HistoricalRecords()字段的普通模型和多态模型,这一切都很好,但是在尝试与具有HistoricalRecords()字段的任何多态模型进行交互时会出错:

django.core.exceptions.FieldError: Cannot resolve keyword 'material_ptr_id' into field.

在我的多态模型序列化器中,我使用以下技术来序列化history字段:

class HistoricalRecordField(serializers.ListField):
    child = serializers.DictField()

    def to_representation(self, data):
        return super().to_representation(data.values())


class ItemSerializer(serializers.ModelSerializer):
    history = HistoricalRecordField(read_only=True)

    class Meta:
        model = Item
        fields = ('history')

有没有一种方法可以使序列化程序不考虑material_ptr_id字段,因为它不是父模型的一部分,而是子模型的一部分?还是我在犯其他明显的错误?感谢您的帮助。

0 个答案:

没有答案