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

我就是这样做的。

在“模型.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 回答