可为空的外键字段反序列化时。得到错误:
“ NoneType”对象没有属性“ foreign_field”
直到Django-Rest-Framework版本才出现此问题: 3.6.4
找到了问题的原因(已删除无检查,并且 ObjectDoesNotExist检查不处理无实例):Link
为什么取消此支票?
是否有任何可解决可空外键字段的解决方法?
尝试了以下操作:
编辑:
模型结构:
return true
序列化器:
<script type="text/javascript" src="/SiteAssets/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="/SiteAssets/jquery-3.4.1.js"></script>
<script type="text/javascript">
function PreSaveAction() {
drop1 = $("select[title='Supervisor Completed']").val();
date1 = $("input[title='Supervisor Date Completed']").val();
drop2 = $("select[title='IMO Completed']").val();
date2 = $("input[title='IMO Date Completed']").val();
drop3 = $("select[title='IAM Completed']").val();
date3 = $("input[title='IAM Date Completed']").val();
if (drop1 !=="Select One..." && date1===""){
alert("The Supervisor Date Completed is a required element. Please Fill this date out.");
return false;
}
if (drop2 !=="Select One..." && date2===""){
alert("The IMO Date Completed is a required element. Please Fill this date out.");
return false;
}
if (drop3 !=="Select One..." && date3===""){
alert("The IAM Date Completed is a required element. Please Fill this date out.");
return false;
}
return true;
}
答案 0 :(得分:1)
找到了解决方案:
class Demo1(ModelSerializer):
demo = CharField(source='demo.name', allow_null=True)
class Meta:
model=models.Demo1
fields = ('id', 'demo')
将 allow_null 放入序列化器后,它就起作用了!但不明白,这有什么意义?如果我们已经在模型中添加了 null = True 。