Django中如何让get_attname()返回包含字段必填属性的列表?
你可以通过判断Django模型字段的blank属性实现需求,参考代码如下:
[(field.get_attname(), 'required' if not field.blank else 'optional') for field in Model._meta.fields]
规则说明
- 模型字段的
blank属性默认值为False,对应字段为必填项;如果字段定义时显式设置了blank=True,则为选填项,和你需要的外键必填的判断逻辑完全匹配。 - 如果你需要对齐数据库层面的非空规则而非表单提交层面的必填规则,把判断条件替换为
not field.null即可。 - 外键字段调用
get_attname()会返回带_id后缀的属性名,如果你需要保留原始字段名,替换为field.name即可。 - 如果你需要过滤掉自增主键这类系统自动赋值的字段,可以添加
auto_created判断,示例如下:
[(field.get_attname(), 'required' if not field.blank else 'optional') for field in Model._meta.fields if not field.auto_created]
内容的提问来源于stack exchange,提问作者Prosy A.
相关产品推荐
相关产品推荐

