Django - 添加新记录时使用 get_readonly_fields 但获取 'NoneType' 对象不可迭代
Django - Using get_readonly_fields but getting 'NoneType' object is not iterable' when adding new record
事情是这样的,如果 X 字段(非必填)有值,则可以编辑其他字段的 none(编辑时)。但是,如果此值为空,则所有其他字段应恢复正常。我在应用程序的 admin.py
中使用了它
def get_readonly_fields(self, request, obj=None):
if obj:
lb = obj.X
if lb:
return ['v','p','e']
else:
return []
这在您输入现有对象时有效,但是在添加新实例时,我得到带有 'NoneType' 对象不可迭代错误的黄页。我知道这一点是因为 OBJ 为空,在查找类似问题时,我发现这是一个带有只读字段的 django 错误,显然。搜索了解决方案,但它们使得创建的对象无法再被编辑(至少我找到的那些)。
我可以使用变通方法或其他方法吗?
谢谢
在你的情况下,get_readonly_fields(...)
方法返回 None
如果没有 obj
。所以,将您的方法更改为,
def get_readonly_fields(self, request, obj=None):
if obj and obj.X:
return ['v', 'p', 'e']
return super().get_readonly_fields(request, obj)
事情是这样的,如果 X 字段(非必填)有值,则可以编辑其他字段的 none(编辑时)。但是,如果此值为空,则所有其他字段应恢复正常。我在应用程序的 admin.py
中使用了它def get_readonly_fields(self, request, obj=None):
if obj:
lb = obj.X
if lb:
return ['v','p','e']
else:
return []
这在您输入现有对象时有效,但是在添加新实例时,我得到带有 'NoneType' 对象不可迭代错误的黄页。我知道这一点是因为 OBJ 为空,在查找类似问题时,我发现这是一个带有只读字段的 django 错误,显然。搜索了解决方案,但它们使得创建的对象无法再被编辑(至少我找到的那些)。
我可以使用变通方法或其他方法吗? 谢谢
在你的情况下,get_readonly_fields(...)
方法返回 None
如果没有 obj
。所以,将您的方法更改为,
def get_readonly_fields(self, request, obj=None):
if obj and obj.X:
return ['v', 'p', 'e']
return super().get_readonly_fields(request, obj)