1
私は作成者フィールドを持つモデルを持っています。このフィールドをモデルインスタンスを作成した人に初期化し、後で変更することはできません。作成者をDjangoRestFrameworkで自動的に設定する
は、作成者フィールドには、次のようになります。
creator = models.ForeignKey(User)
そしてDRF HyperlinkedModelSerializerで私はこれを持っている:
read_only_fields = ('creator',)
今問題があるため、もはや新しいインスタンスを作成することはできませんもちろんのIです作成者フィールドが設定されていません。どうすればそれを達成できますか?
一つの可能な解決策は、これはそれを行うには、乾燥の方法です。この
def create(self, validated_data):
validated_data['creator'] = self.context['request'].user
return models.MyModel.objects.create(**validated_data)
のようですか?
ありがとう、それは私が必要としたものです。この組み合わせがうまくいくかどうかは分かりませんでした。 – Fabian
ええと、私はそれが実際には覚えていないことに気づいた!はい、作成時に作成者が設定されている、それは素晴らしいです。しかし、別のユーザーがputしてパッチを当てると、作成者は最後のユーザーに更新されます。だから今はもっとlast_modified_byフィールドです。 – Fabian
ええと、私は次の正しい実装があると思います:creator = serializers.HyperlinkedRelatedField(view_name = 'user-detail'、read_only = True、default = serializers.CreateOnlyDefault(serializers.CurrentUserDefault()) – Fabian