2016-08-15 14 views
0

私はdjangoアプリケーションを開発中です。私の形で。私は自分のフォームにチェックボックスを持っています。ボックスがチェックされていると私のフォームは正常に送信されますが、ボックスがチェックされていないと、フォームは送信できません。私が使っているフィールドはブールです。ここでチェックを外してもDjangoチェックボックスが表示されない

が私のコードです:

#models.py 

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='False',max_length=500) 
    def __str__(self): 
     return self.title 

#views.py 

def create_ingredient(request): 
    form = IngredientForm(current_user=request.user) 
    if request.method == 'POST': 
      form = IngredientForm(request.POST, current_user=request.user) 
      if form.is_valid(): 
       current_user = request.user 
       data = form.cleaned_data 
       ingredient_data=Ingredient.objects.create(user=current_user, recipe_id=data['recipe_id'], title=data['title'], primal=data['primal'], instructions=data['instructions'], rules=data['rules']) 
       ingredient_data.save() 
       ingredient = Ingredient.objects.get(pk = ingredient_data.pk) 
       return redirect('ingredient_detail', pk=ingredient.pk) 
      else: 
       messages.error(request, "Error") 
    return render(request, 'create_ingredient.html', {'form': form }) 


#in my template 
.... 
<div class="form-group"> 
<div class="checkbox"> 
     <label><input type="checkbox" name="{{ form.primal.name }}" value="True" id="primal1">Primal</label> 
</div> 
</div> 
.... 

誰もが解決策を持っていますか?

答えて

1

これはdjangoについてではなく、一般的にhtmlに関するものです。

<div class="form-group"> 
    <div class="checkbox"> 
     <label><input type="checkbox" name="{{ form.primal.name }}" value="True" id="primal1">Primal</label> 
    </div> 
</div> 

あなたのチェックボックス、チェックを外すことがURLまたはPOSTのボディで{{ form.primal.name }}=Trueをすることはありませんので、飛ぶことはありません:これはあなたのテンプレートです。

問題を解決するには、URLに{{ form.primal.name }}=Falseを追加する方法を確認する必要があります。チェックボックスがチェックされている場合は、チェックボックスのチェックを外し、または{{ form.primal.name }}=False&{{ form.primal.name }}=Trueであれば{{ form.primal.name }}=Falseのようなクエリ文字列の一部を生成します

<div class="form-group"> 
    <div class="checkbox"> 
     <input type="hidden" name="{{ form.primal.name }}" value="False" /> 
     <label><input type="checkbox" name="{{ form.primal.name }}" value="True" id="primal1">Primal</label> 
    </div> 
</div> 

:標準溶液は次のように固定し、追加のフィールド(隠されたもの)を必要とします。この場合、後者の発生のみがカウントされるので、チェックすると"True"、チェックされていない場合は"False"になります。

+0

私はあなたのソリューションを試しましたが、まだ私にエラーが表示されています – Elisha512

関連する問題