3

私はそのように定義された非常に単純なモデルを持っています:

class DateTimeRef(models.Model):
    start = models.DateTimeField(editable=False, db_index=True)

これらのフィールドを Django Admin 経由で作成できるようにしたいと思います。フィールドは編集できないため、次のようにする必要があることを読みました。

class DateTimeRefForm(forms.ModelForm):
    start = forms.DateTimeField()

    class Meta:
        model = models.DayPart


class DateTimeRefAdmin(admin.ModelAdmin):
    form = DateTimeRefForm
    list_display = ['start']

これにより、日時フィールドに使用する簡単なテキスト入力が得られます。 ここに画像の説明を入力

この管理者のユーザーは、必ずしも技術的な傾向があるとは限りません。これらのオブジェクトを簡単に作成できるようにしたいと考えています。編集可能な DateTime フィールドは、このおしゃれなウィジェットをそのまま使用できます。

ここに画像の説明を入力

管理サイトでこのフォーム ウィジェットを使用するために、編集不可のフィールドを取得する方法はありますか?

アップデート

明確にするために:レコードを作成しているときに、Django管理者からこのフィールドを設定できるようにしたいと考えています。フィールドを他の方法で編集可能にしたくありません。

4

2 に答える 2

4

私はこの分野の初心者ですが、目の前にあるコードには次のイディオムがありますadmin.py

class ThingAdmin(admin.ModelAdmin):

    def get_readonly_fields(self, request, obj=None):
        if obj:
            return ('start',)
        else:
            return ()

私の例では、これは新しいオブジェクトを作成するときに編集可能のままにする効果がありますが、古いオブジェクトを見るときはできません。

于 2014-01-27T22:30:40.643 に答える
0

これは私がそれを行う方法です。

「models.py」で:

class Thing(models.Model):
    #field 1
    .....
    date = models.DateTimeField(auto_now_add=True)

admin.py:

class ThingAdmin(admin.ModelAdmin):
    list_display = (....., 'date')
于 2013-11-06T21:00:38.587 に答える