0

私はphpの世界から来たdjangoの初心者です。djangoを使用して、プロジェクトに必要な特定の入力フィールドを作成する方法がわかりませんでした。そこで、これらのフィールドのhtmlをテンプレートに手動で追加しました。つまり、チェックボックスとメニューを追加しました。次に、view.pyで、request.POSTを介して、チェックボックスとメニューのユーザー選択を取得するコードを追加しました。これらの選択を使用して、フォームのインスタンスを変更して保存できます。

すべてうまくいきます。唯一の不具合は、フォームが検証されない場合です。その場合は、フォームを再表示する必要があります。上部にエラーメッセージが表示されます。そこで、renderを呼び出してフォームを再表示します。再表示されたフォームは、カスタマイズしたhtmlのすべての選択を失います。つまり、カスタマイズされたチェックボックスとメニューはリセットされますが、djangoが作成した入力フィールドはリセットされません。カスタマイズされたhtmlに対するユーザーの選択を保存する方法はありますか?ありがとう。

4

2 に答える 2

0

これを使用して入力を使用してフォームを作成できます。フォームの操作 方法を理解するには、ここを参照してください。カスタマイズされた入力でModelFormsを使用 できます。

于 2013-01-26T04:28:57.440 に答える
0

models.py

class Debt(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=50,
        help_text="Name to identify your debt.")
    due_day = models.PositiveSmallIntegerField(
        help_text="Day of the month payment is due.")

forms.py

class DebtForm(forms.ModelForm):
    class Meta:
        model = Debt

views.py

def add_debt(request):
    if request.method == 'POST':
        form = DebtForm(request.POST)
        if form.is_valid():
            form.save() 
return render(request, 'add_debt.html', {
    'form': DebtForm(),
}) 

add_debt.html

<form method="post">{% csrf_token %}
    {% for field in form %}
        {{field}}<br/>
    {% endfor %}
    <input type="submit" value="Save Debt">
</form>
于 2013-01-26T05:49:09.703 に答える