master
ブランチに対して存在することを確認しました。クラスGraphDomainSerializer(serializers.ModelSerializer):
user = serializers.HiddenField(default = serializers.CurrentUserDefault)
クラスCurrentUserDefault(object):
def set_context(self、serializer_field):
self.user = serializer_field.context ['request']。user
def __call__(self):
return self.user
def __repr__(self):
return unicode_to_repr('%s()' % self.__class__.__name__)
def get_default(self):
"" "
入力がない場合にデータを検証するときに使用するデフォルト値を返します
このフィールドにはが提供されます。
If a default has not been set for this field then this will simply
raise `SkipField`, indicating that no value should be set in the
validated data for this field.
"""
if self.default is empty or getattr(self.root, 'partial', False):
# No default, or this is a partial update.
raise SkipField()
if callable(self.default):
if hasattr(self.default, 'set_context'):
**self.default.set_context(self)**
return self.default()
return self.default
ファイル "/Users/lishijin/.pyenv/versions/3.7.2/lib/python3.7/site-packages/rest_framework/fields.py"、行490、get_default
self.default.set_context(self)
TypeError:set_context()に1つの必須の位置引数がありません: 'serializer_field'
[2019年6月24日14:34:45] "POST / photos / HTTP / 1.1" 500 21130
デフォルトは、クラスではなくインスタンスである必要があります。ドキュメントに示されているように、
serializers.CurrentUserDefault()
それは問題を解決しました
最も参考になるコメント
デフォルト値は、クラスではなくインスタンスである必要があります。ドキュメントに示され、
serializers.CurrentUserDefault()