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 ()