繁体   English   中英

Django管理员,使用DateTime小部件在创建时设置了不可编辑的日期字段

[英]Django admin, setting a non-editable date field on creation with the DateTime widget

我有一个非常简单的模型,定义如下:

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字段的简单文本输入: 在此处输入图片说明

该管理员的用户不一定在技术上会有所偏向。 我想让他们更轻松地创建这些对象。 DateTime字段是可编辑的,可立即使用此时髦的小部件:

在此处输入图片说明

无论如何,我可以在管理站点中获取不可编辑的字段来使用此表单小部件吗?

UPDATE

需要说明的是:当我创建记录时,我希望能够通过Django admin设置此字段。 我不希望该字段以任何其他方式可编辑。

我是该领域的新手,但是我面前的代码在admin.py具有以下惯用语:

class ThingAdmin(admin.ModelAdmin):

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

在我的示例中,这样做的效果是在创建新对象时使其可编辑,而在查看旧对象时则不可编辑。

这就是我要做的。

在'models.py'中:

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

admin.py

class ThingAdmin(admin.ModelAdmin):
    list_display = (....., 'date')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM