Django 如何从该模型表单中删除密钥
我有下面的模型表单,我得到了我想要的结果,但是我不知道如何从结果中删除键 表格: 查看返回语句:Django 如何从该模型表单中删除密钥,django,django-templates,django-forms,Django,Django Templates,Django Forms,我有下面的模型表单,我得到了我想要的结果,但是我不知道如何从结果中删除键 表格: 查看返回语句: return render_to_response('tickets/view.html', {'ticket':ticket,'ticketactions':TicketActionsForm()}, context_instance=RequestContext(request) ) 模板: {{ ticketactions.assign }} 结果:(截图:) 决议: 最后
return render_to_response('tickets/view.html',
{'ticket':ticket,'ticketactions':TicketActionsForm()},
context_instance=RequestContext(request)
)
模板:
{{ ticketactions.assign }}
结果:(截图:)
决议:
最后,我在初始化中做了一些小改动,以获得我想要的结果
def __init__(self, *args, **kwargs):
super(TicketActionsForm, self).__init__(*args, **kwargs)
newChoices = []
for item in self.fields['assign'].queryset:
choice=(item['user'],item['user'])
newChoices.append(choice)
self.fields['assign'].choices = newChoices
具有更改ModelChoiceField中使用的标签的简单方法
使用ModelChoiceField时,可能需要调用Users.objects.all()
,而不是Users.objects.values('user')
然后,您需要执行以下代码:
class UserModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return obj.get_full_name()
class TicketActionsForm(ModelForm):
assign = forms.ModelChoiceField(queryset=Users.objects.all().filter(account=3), empty_label=" Select Admin ")
当您制作表单时,应具有以下代码:
class UserModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return obj.get_full_name()
class TicketActionsForm(ModelForm):
assign = forms.ModelChoiceField(queryset=Users.objects.all().filter(account=3), empty_label=" Select Admin ")
这样,一组行(更准确地说,是一个QuerySet
)被传递给ModelChoiceField对象,它将可以访问所有字段。使用上面的代码,您可以控制标签,当您将对象.values('user').filter
更改为对象.all().filter
时,
标记的value
属性将成为行的id
。然后,您可以使用来自request.POST
或request.GET
的传入id
,通过运行查询将其作为任何其他字段存储在数据库中。但是,在大多数情况下,您可能希望将其作为id
存储在数据库中。有一种简单的方法来更改ModelChoiceField中使用的标签
使用ModelChoiceField时,可能需要调用Users.objects.all()
,而不是Users.objects.values('user')
然后,您需要执行以下代码:
class UserModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return obj.get_full_name()
class TicketActionsForm(ModelForm):
assign = forms.ModelChoiceField(queryset=Users.objects.all().filter(account=3), empty_label=" Select Admin ")
当您制作表单时,应具有以下代码:
class UserModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return obj.get_full_name()
class TicketActionsForm(ModelForm):
assign = forms.ModelChoiceField(queryset=Users.objects.all().filter(account=3), empty_label=" Select Admin ")
这样,一组行(更准确地说,是一个
QuerySet
)被传递给ModelChoiceField对象,它将可以访问所有字段。使用上面的代码,您可以控制标签,当您将对象.values('user').filter
更改为对象.all().filter
时,
标记的value
属性将成为行的id
。然后,您可以使用来自request.POST
或request.GET
的传入id
,通过运行查询将其作为任何其他字段存储在数据库中。但是,在大多数情况下,您可能希望将其作为id
存储在数据库中。好的,因此在进行一些尝试之后,我只能更改标签。我一直在搜索值覆盖,但找不到任何内容。有什么办法吗?我已经更新了答案。我没有仔细阅读您传递给queryset参数的代码。嗯,我可以发誓我昨晚试过了。。不过现在正在工作。谢谢你的帮助。好吧,在玩了一些游戏之后,我只能换标签了。我一直在搜索值覆盖,但找不到任何内容。有什么办法吗?我已经更新了答案。我没有仔细阅读您传递给queryset参数的代码。嗯,我可以发誓我昨晚试过了。。不过现在正在工作。谢谢你的帮助。