[英]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.