2

datetimefield を定義するモデルがあります。

dateAdded = models.DateTimeField("Date Added", auto_now_add=True)

私のModelAdminサブクラスでは、次のフィールドセットにフィールドを表示しようとしています:

fieldsets = (
    (None, {
        'fields': (
            ("modelId", "altModelIds", "modelName", "dateAdded"),
            ("manufacturer", "protocol", "category"),
            ("versionAdded", "proOnly", "published", "discontinued"),
            "notes"
        )
    }),

しかし、次のエラーが表示されます。

FieldError: Unknown field(s) (dateAdded) specified for Device

興味深いことに、それを list_display に追加すると、次のようになります。

list_display = ("modelName", "published", "modelId", "altModelIds", "manufacturer", "protocol", "category", "dateAdded")

それは正常に動作します。私はばかげたことをしているだけだと確信しています (私は Django から約 8 か月間離れています) が、それを理解することはできません。どんな助けでも大歓迎です。

4

1 に答える 1

6

auto_now_add とマークされた datetimefield モデル フィールド タイプも暗黙的に editable=False が与えられるため、変更フォームには表示されません。ModelAdmin クラスに設定されたフィールドにフィールドを指定すると、読み取り専用であるためモデルに含まれているとは見なされないようです。モデルに含まれているため、実際にはばかげたエラーメッセージですが、そのとおりです。

次に、モデルの変更フォームでフィールドを読み取り専用で表示する方法を見つけます (ただし、これは別の問題です)。

于 2013-07-31T18:32:32.440 に答える