2

startという日時フィールドを持つOrderというモデルがあります。そのフィールドとの間で問題なく読み書きできます。

ただし、ModelFormを作成し、Metaのfields =()の1つとしてstartを指定すると、次のようになります。

Unknown field(s) (start) specified for Order

フィールド名をコピーして貼り付けることで、タイプミスではないことを確認しました。そのフィールドを削除すると、機能します。

これが正確なModelFormです

class OrderForm(ModelForm):
    class Meta:
        model = Order
        fields = ('details', 'start', 'quantity', 'total')

EDITはより多くの詳細を追加しました:

必要なフィールドを除くすべてのフィールドを除外するためにexclude=()を使用しようとしましたが、除外しなくてもstartがフォームに表示されません。

モデルは次のとおりです。

class Order(MyModel):
    user = models.ForeignKey(User, )
    invoice = models.ForeignKey(Invoice, )
    unit_price = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, )
    subtotal = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null    =True, )
    tax = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, )
    misc = models.DecimalField(max_digits=5, decimal_places=2, blank=True, null=True, )
    total = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, )
    start = models.DateTimeField(auto_now_add=True, blank=True, null=True, )
    end = models.DateTimeField(editable=True, blank=True, null=True, )
    duration = models.PositiveSmallIntegerField(blank=True, null=True, )
    quantity = models.PositiveSmallIntegerField(blank=True, null=True, )
    notes = models.CharField(max_length=256, blank=True, null=True, )
    details = models.CharField(max_length=64, blank=True, null=True, )
    configured = models.BooleanField(default=False, )
4

3 に答える 3

2

削除する:

auto_now_add=True

モデルフィールドリファレンス| Djangoのドキュメント| Django

現在実装されているように、auto_nowまたはauto_now_addをTrueに設定すると、フィールドにeditable=Falseおよびblank=Trueが設定されます。

于 2012-09-27T17:42:35.020 に答える
1

auto_now_add = Trueを削除すると、問題は解決しました。

みんなの助けてくれてありがとう。

于 2012-09-27T17:30:49.193 に答える
0

たぶんあなたはその分野editable=Falseのために定義しましたか?start

ドキュメントによると:

の場合False、フィールドは管理者またはその他に表示されませんModelForm。デフォルトはTrueです。

于 2012-09-27T16:46:16.510 に答える