我是django的新手,我尝试根据以下答案连接来自不同模型的不同查询集:https://stackoverflow.com/a/434755/4465450
当我试图在我的管理员中查看它时,我一直收到这个错误。在
'list' object has no attribute 'iterator'
我在我的表单.py在
from django import forms
from itertools import chain
from content.models import Article, Tutorial
class DashboardChoiceForm(forms.Modelform):
dashboard_select = forms.ModelChoiceField(queryset=None)
def __init__(self, *args, **kwargs):
super(DashboardChoiceForm, self).__init__(*args, **kwargs)
article_list = Article.objects.all()
tutorial_list = Tutorial.objects.all()
self.fields['dashboard_select'].queryset = list(chain(article_list, tutorial_list))
我把它放在我的管理页面上,如下所示:
^{pr2}$我要做的是在rowsone admin上创建一个下拉列表,以便用户可以选择一个内容项(文章或教程)显示在该行中。在
这行行不通:
问题不是从右边来的,而是从左边来的。}是实际的查询集,而不是列表。在
ModelChoiceField
要求{如果您想提供一个列表,您应该使用另一个字段类型,即
ChoiceField
。然后你需要分配选择。它们必须是2元组的列表,其中第一项是实际值,第二项是显示的文本。在它变得有点棘手,因为实际值必须是字符串,或者可以转换为字符串的东西。例如,我们可以对文章执行“article”<;pk>;“和教程”。在
^{pr2}$您可以将
str(obj)
替换为向用户显示对象的任何合理方式。在然后,当您的表单被验证时,您将获得该值,您应该将其解析回:
编辑(来自注释)-要添加分区组,请按如下方式更改选项:
相关问题 更多 >
编程相关推荐