私のモデルはこれです:
class Post(models.Model):
user = models.ForeignKey(User)
post = models.CharField(max_length=400)
subject = models.ForeignKey(Subject, blank=True, null=True)
これは私のシリアライザです:
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('user', 'post', 'subject')
def create(self, validated_data):
post = Post(
user = User.objects.get(username='A'),
post = validated_data['post'],
)
この時点で、「件名」がエンド ユーザーによって提供されたかどうかを確認し、提供されている場合は、フィールドを追加して投稿オブジェクトを保存します (そうでない場合は、「件名」フィールドを追加せずに投稿オブジェクトを保存します)。Pythonシェルを開いて、これを行いました:
p = PostSerializer(data={'user':16, 'post':'p'})
p.is_valid()
# returned True
if p.validated_data['subject']:
print('exists')
else:
print('does not exist')
これは次のエラーを返します。
Traceback (most recent call last):
File "<console>", line 1, in <module>
KeyError: 'subject'
そうは言っても、検証されたフィールドが存在するかどうかを確認する正しい方法は何ですか?