私は通常の Django モデルを使用していますが、今では と を使用して、ポリモーフィック モデルを DRF REST API プロジェクトに組み込み始めていdjango-polymorphicますrest-polymorphic。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親モデルの一部ではなく、子モデルのみであるため、フィールドがシリアライザーによって考慮されないようにする方法はありますか? または、私が犯している明らかな他の間違いはありますか? これについて助けてくれてありがとう。