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参数的代码。嗯,我可以发誓我昨晚试过了。。不过现在正在工作。谢谢你的帮助。