我在Django模型上有一个选项字段:
VALID = 0
INVALID = 1
FLANGGED = 2
NOT_REVIEWED = 3
STATUS_CHOICES = (
(VALID, 'Valid'),
(INVALID, 'Invalid'),
(FLANGGED, 'Flagged'),
(NOT_REVIEWED, 'Not Reviewed'),
)
review_status = models.PositiveSmallIntegerField(
choices=STATUS_CHOICES, default=NOT_REVIEWED)
当我把它放到前端时,我使用obj.get_review_status_display()
来获取字符串值
当我编辑这个模型(通过DRF)并传递整数值时,我可以看到序列化程序上的validate()
方法被调用。但是,当我传递字符串值来修补模型时,validate()
永远不会被调用:
def validate(self, data):
valid_status_key = False
if 'review_status' in data:
for k, v in Application.STATUS_CHOICES:
if v == data['review_status']:
valid_status_key = k
if not valid_status_key:
raise serializers.ValidationError('Invalid review status')
else:
data['review_status'] = valid_status_key
# only called when data['review_statuse'] is an Int, not String
assert False, [data, valid_status_key]
return data
所以。。。如何将字符串值传递到后端,并使用validate()
方法根据我的选项字段验证它
目前没有回答
相关问题 更多 >
编程相关推荐