【发布时间】:2018-02-01 19:30:48
【问题描述】:
全部,
我是 Django 的新手,到目前为止一直做得很好,但这个让我很难过。我正在尝试将 ModelChoiceField 用于许多具有相同名称的记录。我正在使用 Postgresql,所以我能够确定我需要使用 distinct 命令,并且运行良好。我的下拉列表中的记录都被精简为每个记录的一个版本。但是,当我尝试获取特定记录的所有版本时,这就是我迷路的地方。如果我不通过 DetailView 使用 distinct,我可以获取每条记录的详细信息,但我真的想在 modelchoicefield 之后在屏幕上获取每条记录的所有版本。
这是我的表格:
class History(forms.Form):
dropdown = forms.ModelChoiceField(queryset=History.objects.all())
def __init__(self, user, *args, **kwargs):
super(History, self).__init__(*args, **kwargs)
self.fields['dropdown'].widget.attrs['class'] = 'choices1'
self.fields['dropdown'].empty_label = ''
qs = History.objects.all().distinct('record_name')
self.fields['dropdown'].queryset = qs
我最终试图通过我的模板在屏幕上查看查询集。我在模板中尝试了几种不同版本的代码,但似乎没有任何效果。如果我使用没有不同的 CBV DetailView,我可以很好地获取所有记录及其详细视图。然而,这不是我想要做的。我已经在模板中使用了几个版本的 queryset 命令,因为我发现了几个与我的问题相似但似乎无法让它工作的问题。我发现了一些类似的参考:
{% for record in form.history.field.queryset %}
etc.
{% endfor %}
但似乎无法让它在我的 Django 模板中工作。任何和所有的帮助表示赞赏!提前谢谢!
【问题讨论】:
-
如果我理解你的问题,那么它即将显示取决于你的下拉框的当前值的数据记录?
-
@Max M 是的,这就是我想要做的,获取用户从下拉框中选择的值,然后在下一个屏幕上显示所有具有相同名称的记录。
标签: django postgresql python-3.x django-forms django-templates