我有一个非常简单的模型定义如下:
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字段是可编辑的,可以开箱即用这个时髦的小部件:
无论如何,我可以让我的不可编辑字段在管理站点中使用此表单小部件吗?
更新
澄清一下:我希望能够在创建记录时通过Django管理员设置此字段。我不希望该字段可以以任何其他方式编辑。
答案 0 :(得分:4)
我是这方面的新手,但我面前的代码在admin.py
中有以下习语:
class ThingAdmin(admin.ModelAdmin):
def get_readonly_fields(self, request, obj=None):
if obj:
return ('start',)
else:
return ()
在我的示例中,这样可以在创建新对象时将其保留为可编辑状态,但在查看旧对象时则不会。
答案 1 :(得分:0)
我就是这样做的。
'model.py'中的:
class Thing(models.Model):
#field 1
.....
date = models.DateTimeField(auto_now_add=True)
admin.py
中的:
class ThingAdmin(admin.ModelAdmin):
list_display = (....., 'date')