シリアライザのフィールドの1つがinitメソッドで作成された値に依存するシリアライザが必要です。リストシリアライザでDjango Rest Frameworkを使用するときにinitで変数を初期化する
私は次のような何かをしようとしている:random_idは、すべてのリスト項目について同じであるリスト・シリアライザを使用する際に
class MySerializer(serializers.ModelSerializer):
the_field_value = serializers.SerializerMethodField()
another_field_value = serializers.SerializerMethodField()
class Meta:
model = MyModel
fields = ('id', 'the_field_value', 'another_field_value')
def get_the_field_value(self, obj):
return "{0} ({1}) {2}".format(obj.name, obj.other_name, self.random_id)
def get_another_field_value(self, obj):
return "{0} ({1}) {2}".format(obj.other_other_name, obj.other_name, self.random_id)
def __init__(self, *args, **kwargs):
super(MySerializer, self).__init__(*args, **kwargs)
self.random_id = randint(1, 5)
問題があります。
各リスト項目に対して実行するinitメソッドを指定するにはどうすればよいですか?
もっと詳しい例で更新されました。
なぜ__init__メソッドでランダマイザを実行する必要がありますか?あなたが 'get_the_field_value'に入れたら、あなたの問題は解決されるはずです....? –
@MarkChackerian私は、複数の関数で生成されたランダム変数を利用したいと思います。 – oowowaee