重写get_model_form方法,如何向验证的form传递request的值?
来源:16-3 如何定义编辑页面和新增页面的表单
多彩的云
2020-02-04
你好,bobby老师,请问xadmin重写get_model_form方法,如何向验证的form传递request的值呢?我这里有个需求是要求根据数据库来动态的设置model字段为choice的值,网上查询了资料,发现是需要重写form的init,重新查询一下数据库,从而达到动态设置choice的值,那么问题来了,我想要根据不同的用户,动态的显示choice不同的值,这里需要向form传递用户的信息,但是我发现如果直接传递,会报错 xxxform is not callable,
我不知道如何传递,请老师指点一下,代码如下
adminx中
def get_model_form(self):
if self.org_obj is None:
self.form = addMessageForm
#如果这里写成下面的格式,会报错 addMessageForm is not callable
#self.form = addMessageForm(request.user)
return super(MessageAdmin, self).get_model_form()
addMessageForm中
class addMessageForm(forms.ModelForm):
# 重写父类的 __init__ 方法
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['send_department'].widget.choices = Department.objects.values_list("id", "name")
#我在这里想要根据传入的用户信息来过滤数据
#self.fields['send_department'].widget.choices = Department.objects.filter(user=request.user).values_list("id", "name")
title = forms.CharField(
max_length=25,
label="消息标题",
help_text="请输入消息标题",
error_messages={
'max_length': '不能超过25个字符',
})
class Meta:
model = Message
fields = ("title", "send_department", "content")
写回答
2回答
-
这里的值是写死的,你可以改成查询数据库 然后组装成这种格式不就行了吗
012020-02-05 -
bobby
2020-02-05
012020-02-05
相似问题