Python Django admin,在使用DateTime小部件创建时设置不可编辑的日期字段

Python Django admin,在使用DateTime小部件创建时设置不可编辑的日期字段,python,django,django-forms,django-admin,readonly,Python,Django,Django Forms,Django Admin,Readonly,我有一个非常简单的模型,定义如下: class DateTimeRef(models.Model): start = models.DateTimeField(editable=False, db_index=True) 我想允许通过Django管理员创建这些字段。因为该字段是不可编辑的,所以我读到需要这样做: class DateTimeRefForm(forms.ModelForm): start = forms.DateTimeField() class Met

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

class DateTimeRef(models.Model):
    start = models.DateTimeField(editable=False, db_index=True)
我想允许通过Django管理员创建这些字段。因为该字段是不可编辑的,所以我读到需要这样做:

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

    class Meta:
        model = models.DayPart


class DateTimeRefAdmin(admin.ModelAdmin):
    form = DateTimeRefForm
    list_display = ['start']
这将为datetime字段提供一个简单的文本输入:

这个管理员的用户不一定有技术倾向。我想让他们更容易创建这些对象。DateTime字段是可编辑的,可以从框中取出这个时髦的小部件:

我是否可以在管理站点中获取不可编辑字段以使用此表单小部件

更新

澄清一下:在创建记录时,我希望能够通过Django管理员设置此字段。我不希望该字段以任何其他方式进行编辑。

我就是这样做的

在“models.py”中:

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

我就是这样做的

在“models.py”中:

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


我是这方面的新手,但我面前的代码在admin.py中有以下习惯用法:


在我的示例中,这会在创建新对象时使其保持可编辑状态,但在查看旧对象时则不可编辑。

我是这方面的新手,但我面前的代码在admin.py中有以下习惯用法:


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

为什么您要声明一个字段不可编辑,然后要使其始终处于可编辑状态?为什么不自动创建它们,并且不在表单中显示时间?只需在列表中显示它?我需要指定创建它的日期时间。如果我自动创建它们,我相信如果我没有弄错的话,它只会使用当前时间。检查我的答案,我认为这是您需要的。为什么您声明一个字段不可编辑,然后又花费大量的精力使其可编辑?为什么不自动创建它们,并且不在表单中显示时间?只需在列表中显示它?我需要指定创建它的日期时间。如果我自动创建它们,我相信它只会使用当前时间,如果我没有弄错的话。检查我的答案,我认为这是您需要的。我希望能够在开始时设置字段,但之后再也不要更改它。因此,auto_now_add=True可能对我不起作用。我希望能够在开始时设置该字段,但之后再也不能更改它。所以auto\u now\u add=True可能对我不起作用。
class ThingAdmin(admin.ModelAdmin):

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