django - 无法将属性添加到 __init__ 的 ModelForm 字段
问题描述
我有以下模型,它返回 ManyToMany 字段 ( approvers
) 中的值作为Integerfield
( ) 中的选择step
:
from django.utils.functional import lazy
class Task(models.Model):
step = models.IntegerField(null=True)
approvers = models.ManyToManyField(
get_user_model(),
)
@property
def get_step_choices(self):
CHOICES = []
if self.approvers:
CHOICES = [(a.id, a.email) for a in self.approvers.all()]
return CHOICES
def __init__(self, *args, **kwargs):
super(Task, self).__init__(*args, **kwargs)
self._meta.get_field('step')._choices = lazy(
self.get_step_choices, list
)()
但是,我在init下使用的语法似乎不会将选项 attr 呈现为step
. 我哪里错了?
解决方案
推荐阅读
- angular - Angular Material Sorting a number assending doesn't work
- java - 带有安全管理器的 Tomcat 9.0 在 Windows 上报告访问被拒绝
- javascript - Internet Explorer 11 在 Post Request 中向 Typescript Map 添加值
- java - 在android中,选中RecyclerView中的复选框,会自动选中其他一些复选框
- ruby-on-rails - 由于依赖关系,无法运行捆绑安装
- javascript - 将表单验证功能分解为更小的功能
- c++ - 如何将值传递给 lambda 函数
- javascript - 反应单选按钮更新状态
- java - 我只需要来自 forEach 的一个地址,但我在 forEatch 中的 JSTL 提交按钮中获得了多个地址?
- mongodb - MongoDB:没有$unwind的嵌入式文档数组中的字段比较?