1

だから私はまだDjangoに不慣れです。フォームに 1 つのフィールドがあります。そして、フォーム保存機能やモデル保存機能が必要かどうか疑問に思っていました。どちらかまたはどちらかを使用するのが適切なのはいつですか?

例:私のフォーム:

class OpinionStatusForm(forms.Form):
    choices = (('0', "Your Status"), ('1', "This"), ('2', "That"), ('3', "The Other"))
    status = forms.CharField(max_length=2, widget=forms.Select(choices=choices, attrs={'class':'status_dropdown','onchange': 'this.form.submit();'}), required=False)

    def save(self, opinion_status):
        opinion_status.status = self.cleaned_data['status']

私のモデル:

class OptionStatus(models.Model):
    user = models.ForeignKey(User, null=True, unique=True)
    status = models.CharField(max_length=2, choices=opinion_statuses)
    opinion = models.ForeignKey(Opinion, null=True, blank=True)

    def __unicode__(self):
        return self.status

    def save(self, *args, **kwargs):
        super(OpinionStatus, self).save(*args, **kwargs)

フォームを ajax します。それが違いを生むかどうかはわかりません。ありがとう!

4

1 に答える 1

2

実際に必要なのは ModelForm です。あなたの例では、標準の forms.Form を使用しています。これはモデル インスタンスにバインドされていません。その結果、save メソッドも必要ありません。最良の例は、Django docs 内で実際に提供されています。

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

コード例を順を追って説明すると、理解できます。1 つの Stackoverflow の回答ですべてを説明するのは多すぎます。Django のドキュメントは信じられないほど徹底しています。

于 2013-01-15T22:31:43.617 に答える