【发布时间】:2015-09-25 22:07:06
【问题描述】:
我有下一个序列化程序:
class AddressSerializer(serializers.ModelSerializer):
class Meta:
model = Address
class ClientSerializer(serializers.ModelSerializer):
address = AddressSerializer()
class Meta:
model = Client
fields = ('id', 'email', 'address')
模型:
class Address(models.Model):
street = models.CharField(max_length=50, default='')
zip = models.CharField(max_length=5, default='')
state = models.CharField(max_length=50, choices=STATES ,default='')
suburb = models.CharField(max_length=50, default='')
num = models.CharField(max_length=7, blank=True, default='')
country = models.CharField(max_length=50, default='')
ref = models.CharField(max_length=120, blank=True)
class Client(models.Model):
address = models.OneToOneField(Address, null=True)
email = models.EmailField(unique=True, default='')
预期的行为是根据需要拥有所有 AddressSerializer 字段,但事实并非如此
当我在客户端列表 api 视图中检查 options 时,我得到的地址如下:
"address": {
"type": "field",
"required": true,
"read_only": false,
"label": "Address"
}
但是当我检查地址列表 api 视图时,我的所有字段都是可选的:
"street": {
"type": "string",
"required": false,
"read_only": false,
"label": "Street",
"max_length": 50
},
"state": {
"type": "string",
"required": false,
"read_only": false,
"label": "State",
"max_length": 50
},
"zip": {
"type": "string",
"required": false,
"read_only": false,
"label": "ZIP",
"max_length": 5
},
为什么本应必填的字段没有?
如何在不使用extra_kwargs 参数的情况下将所有字段设置为最好?
【问题讨论】:
-
您可以在模型上设置必填字段吗?
-
@jvc26 他们是,我只对其中一些使用
blank=True -
你能发布你的模型吗,因为 ModelSerializer 提供的信息有限并且基于此
标签: django python-3.x django-rest-framework