gpt4 book ai didi

DjangoRestFramework - 如何检查 valied_data 中是否存在可选的序列化程序字段?

转载 作者:行者123 更新时间:2023-12-05 00:58:18 25 4
gpt4 key购买 nike

我的模型是这样的:

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 shell 并这样做了:
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'

话虽如此,检查验证字段是否存在的正确方法是什么?

最佳答案

您可以访问.data attr 来自 p :

p.data.get('subject', None)

如果返回 None那么“主题”字段不存在。当您调用 .is_valid() 时,数据将得到验证方法。

关于DjangoRestFramework - 如何检查 valied_data 中是否存在可选的序列化程序字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32981119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com