1

私はdjangoに問題があります:
models.py:

SUSPEND_TIME = (
    ('0', '0'),
    ('10', '10'),
    ('15', '15'),
    ('20', '20'),


class Order(models.Model):  
    user = models.ForeignKey(User)  
    city = models.CharField(max_length=20)  
    ...
    processed = models.BooleanField(default=False)
    suspend_time = models.CharField(max_length=2, choices=SUSPEND_TIME, default='0')  
    ..

フォーム.py:

class OrderForm(forms.ModelForm):
    class Meta:
        model = Order
        fields = ('suspend_time', 'processed')

ビュー.py:

        try:
            order = Order.objects.get(id=order_id)
        except Order.DoesNotExist:
            order = None
        else:
            form = OrderForm(request.POST, instance=order)
            if form.is_valid():
            form.save()
            ....  

"processed"次に、 paramのみでインスタンスを更新するために ajax リクエスト を送信し
form.is_validます 。デフォルト値があります..そして順序。常にいくつかの選択肢があります。 なぜ後は、他のフィールド は通常の値です。 False"suspend_time" !
{'suspend_time': 'some_value' ...} form.is_validTrue
suspend_timesuspend_timevalue: default
form = OrderForm(request.POST, instance=order) form['suspend_time'].value()None(city, processed)

4

1 に答える 1

1

動作は期待どおりです。フォームは、指定されたデータで検証する必要があります。つまり、フォームで定義されている必須フィールドはすべて、インスタンス化するためにデータ ディクショナリに存在する必要があります。インスタンスからのデータを使用して、フォーム データで提供されていないフィールドに入力することはありません。

django モデルフォームからのテキスト

データベース駆動型のアプリを構築している場合、Django モデルに密接に対応するフォームが作成される可能性があります。たとえば、BlogComment モデルがあり、人々がコメントを送信できるフォームを作成したいとします。この場合、モデルで既にフィールドを定義しているため、フォームでフィールド タイプを定義するのは冗長です。

このため、Django には、Django モデルから Form クラスを作成できるヘルパー クラスが用意されています。

于 2012-11-01T16:20:29.100 に答える