私は通常の 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
親モデルの一部ではなく、子モデルのみであるため、フィールドがシリアライザーによって考慮されないようにする方法はありますか? または、私が犯している明らかな他の間違いはありますか? これについて助けてくれてありがとう。