2016-08-15 3 views
1

조리법에 따라 재료를 걸러 낼 수있는 장고 응용 프로그램을 개발 중입니다. 내 사용자 필터링 옵션을 제공하기 위해 장고 필터를 사용하고 있습니다. 필자의 여과 드롭 다운은 완벽하게 작동하지만 조리법에 관계없이 모든 성분을 나열해야하는 'All'옵션을 추가하고 싶습니다. 그것을 수행하는 방법데이터 필터링시 django 필터에서 'All'옵션을 만드는 방법

#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 }) 

어떤 생각 : 여기

내 코드?

답변

0

이것은 알려진 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'---------')) 
관련 문제