【发布时间】:2015-11-08 23:51:46
【问题描述】:
这是我的模型:
class UserExtended(models.Model):
user = models.OneToOneField(User)
message = models.CharField(max_length=400, blank=True, null=True)
它与默认的 Django User 模型具有 OneToOneField 关系。这是我的 UserSerializer:
class UserSerializer(serializers.ModelSerializer):
message = serializers.CharField(source='userextended.message')
class Meta:
model = User
fields = ('username', 'password', 'email', 'message',)
extra_kwargs = {
'password': {
'write_only': True,
},
'email': {
'required': True,
}
}
问题在于,现在 DRF 认为 message 字段是必需的,即使我的模型中有 blank=True 和 null=True。
1) 如何将message 字段添加到序列化程序而不覆盖它?
或
2) 如果 DRF 默认对其进行序列化(即如果我没有覆盖它/如果 UserExtended 有它自己的序列化程序),我有没有办法检查 message 字段的外观?这样,当我重写它时,我可以使它与 UserExtended 有序列化器时 DRF 最初的方式完全相同。
我所说的#2 的意思是,如果我正在序列化UserExtended(它可能还会自动添加我不知道的其他内容)。但是,因为在我目前的情况下(我不能只将 message 添加到字段列表中,我只能通过覆盖它并使用 source 来做到这一点),我不知道除了 DRF 还会自动添加什么required=False 到序列化器。
【问题讨论】:
-
@Ivan 抱歉,我的意思是 DRF 会将
required=False添加到我的message序列化器字段(如果我正在序列化UserExtended),因为我模型中的message字段具有 @ 987654343@.
标签: django django-rest-framework