如何在Django筛选器中筛选d时生成选项“All”

2024-09-30 02:24:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个django应用程序,可以根据配方过滤配料。我使用django过滤器给我的用户过滤选项。我的过滤下拉列表工作得很好,但我想添加一个选项'所有',在提交时,所有成分应列出,无论其配方。你知道吗

这是我的密码:

#models.py

class Recipe(models.Model):
    user = models.ForeignKey('auth.User')
    title = models.CharField(max_length=500)
    description = models.TextField(max_length=500)
    rules = models.TextField(max_length=500,blank=True)
    def __str__(self):
            return self.title
class Ingredient(models.Model):
    user = models.ForeignKey('auth.User')
    recipe_id = models.ForeignKey(Recipe, on_delete=models.CASCADE)
    title = models.CharField(max_length=500)
    instructions = models.CharField(max_length=500)
    rules = models.TextField(max_length=500,blank=True)
    primal = models.CharField(default='0',max_length=500,blank=True)
    def __str__(self):
            return self.title

#forms.py

class RecipeFilter(django_filters.FilterSet):
    class Meta:
        model = Ingredient
        fields = ['recipe_id']

#views.py

def ingredient_list(request):
    ingredientfilter = IngredientFilter( queryset=Recipe.objects.filter(user = request.user))
    if request.method == 'GET' and 'recipe_id' in request.GET:
        recipe_id=request.GET['recipe_id'];
        ingredients = Ingredient.objects.filter(recipe_id= recipe_id)
        selected_combo_value = Recipe.objects.get(pk=recipe_id)
        return render(request, 'ingredient_list.html',{'ingredients':ingredients, 'ingredientfilter': ingredientfilter,'selected_combo_value':selected_combo_value })
    else:
        ingredients = Ingredient.objects.filter(user = request.user)
    return render(request, 'ingredient_list.html',{'ingredients':ingredients, 'ingredientfilter': ingredientfilter })

你知道怎么做吗?你知道吗


Tags: selfidreturntitlemodelsrequestrecipelength
1条回答
网友
1楼 · 发布于 2024-09-30 02:24:00

这是一个已知的issue。解决方法是覆盖过滤器的选项。你知道吗

class RecipeFilter(django_filters.FilterSet):
    def __init__(self, *args, **kwargs):
        super(RecipeFilter, self).__init__(*args, **kwargs)
        self.filters['recipe_id'].field.choices.insert(0, ('', u'    -'))

相关问题 更多 >

    热门问题