我使用的是常规Django模型,但现在开始使用django-polymorphic
和rest-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
字段,因为它不是父模型的一部分,而是子模型的一部分?还是我在犯其他明显的错误?感谢您的帮助。