【发布时间】:2014-08-06 02:15:10
【问题描述】:
我正在为我的网站构建一个过滤器,人们可以在其中按美食进行过滤。为了实现这一点,我使用模型表单来接收输入信息,这些信息在我的视图中的查询中设置过滤器变量。但是,正如您在下面链接的图片中看到的那样,我的美食类别的默认选择是 '-------'。
我将如何更改它以说出“全部”一词并设置一个值,以便我的过滤器查询这些类别的所有内容?我认为这与使用表单方法有关,但我无法理解某些示例中实际发生的情况。
这是我的简单代码
型号
class Cuisine(models.Model):
name = models.CharField()
def __str__(self):
return self.name
class Food(models.Model):
name = models.CharField()
cuisine = models.ForeignKey(Cuisine)
def __str__(self):
return self.name
观看次数
def home_page(request):
if request.method == 'GET':
form = FilterForm(request.GET)
if form.is_valid():
cuisine = form.cleaned_data['cuisine']
food = get_list_or_404(Food, cuisine__pk=cuisine.pk)
return render('base.html', {'food': food, 'form':form})
else:
form = FilterForm()
return render('base.html', {'form':form})
表格
class FilterForm(forms.ModelForm):
class Meta:
model = Cuisine
fields = ('name')
【问题讨论】:
-
这似乎不是您的实际代码。美食没有选择字段,因此表单不会使用下拉菜单呈现。
-
对不起,你是对的,这个屏幕截图来自我的旧代码,我的旧东西有点脏。我需要重新添加它。 编辑:刚刚检查了我的旧代码,这实际上正是我所拥有的,除了在表格中,模型设置为食物。它确实呈现了选择下拉菜单。
-
对,Food 模型会呈现一个下拉菜单,因为它有一个外键。请您更新代码。
标签: python django forms filter