我有一张这样的表格:
class MyForm(forms.Form):
[...]
在我看来:
if request.method == 'GET':
form = MyForm(request.GET)
现在,我想添加一个表单字段,它在select字段中包含一组值,并且queryset必须由当前登录的用户过滤。因此,我更改了方法签名,使其包含请求对象:
class MyForm(forms.Form):
def __init__(self, user, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.myfield = forms.ChoiceField([('%s' % d.id, '%s' % d.name) for d in MyModel.objects.filter(owners = user)])
但是在呈现表单之后,我得到的只是一个对象引用作为字符串,而不是select小部件。我觉得表单域一旦声明就不能修改。你知道吗
有什么想法吗?你知道吗
将最后一行代码替换为:
我想你想要的是:
假设
MyModel
的__unicode__
方法返回self.name
。 如果不是这种情况,那么可以将ModelChoiceField
子类化并重写label_from_instance
方法。你知道吗相关问题 更多 >
编程相关推荐