0
私はDjangoシリアライザを理解し、学びたいと思っています。例を挙げてみましょう:Django RESTシリアライザのattrs.getとは何ですか?
from rest_framework import serializers
class CommentSerializer(serializers.Serializer):
email = serializers.EmailField()
content = serializers.CharField(max_length=200)
created = serializers.DateTimeField()
def restore_object(self, attrs, instance=None):
"""
Given a dictionary of deserialized field values, either update
an existing model instance, or create a new model instance.
"""
if instance is not None:
instance.email = attrs.get('email', instance.email)
instance.content = attrs.get('content', instance.content)
instance.created = attrs.get('created', instance.created)
return instance
return Comment(**attrs)
「attrs.get」がどこから来たのか、それが何であるかは分かりません。でも、あまり明確なこのような線です
:
instance.email = attrs.get('email', instance.email)
instance.content = attrs.get('content', instance.content)
instance.created = attrs.get('created', instance.created)
その尻尾を食べるヘビのように感じている...「インスタンスは」すでに「電子メール」属性を持っている場合、見えるかのポイントは何ですかそれを見上げてそれを自分自身に設定するのが好きですか?
に相当します。 –
あなたはそれを次のように読むことができます:もしattrsがキー 'email'を持っていれば、それは例えば他の方法で現在の値を使用します。 –
私はばかげていて、(1)名前空間 'attrs'の下で一連のメソッドを提供するいくつかのインポートを探していました。(2) '.get'がデフォルトを取ることを認識できませんでした。 – eSurfsnake