我有一个带auto_now的模型,并为更新和创建字段设置了auto_now_add:
class HotelProfiles(models.Model):
fe_result_id = models.AutoField(primary_key=True)
fe_created_date = models.DateTimeField(verbose_name='Created',
blank=True,
auto_now_add=True)
fe_updated_date = models.DateTimeField(verbose_name='Updated',
blank=True,
auto_now=True)
在管理员中,它会显示两个字段,但不允许使用这些字段。他们 似乎没有传递给我的表单进行渲染。我不想要他们 可编辑,但我想显示在表单的顶部。 我怎么能这样做?
这是我的HotelProfilesAdmin类:
readonly_fields = ('fe_result_id', 'fe_created_date', 'fe_updated_date', 'fe_owner_uid')
#date_hierarchy = 'lto_end_date'
fieldsets = (
("Internal Use Only", {
'classes': ('collapse',),
'fields': ('fe_result_id', 'fe_created_date', 'fe_owner_uid', 'fe_updated_date', 'fe_result_status')
}),
答案 0 :(得分:2)
示例:
from django.contrib import admin
class HotelProfilesAdmin(admin.ModelAdmin) :
# Keep the fields readonly
readonly_fields = ['fe_created_date','fe_updated_date']
# The fields in the order you want them
fieldsets = (
(None, {
'fields': ('fe_created_date', 'fe_updated_date', ...other fields)
}),
)
# Add your new adminform to the site
admin.site.register(HotelProfiles, HotelProfilesAdmin)
答案 1 :(得分:1)
为了别人的利益,我找到了一种方法。我是Django的新手,所以如果有更好的方法,我会有兴趣听到它。视图代码如下。我不确定Django是否没有从查询中返回字段,我发现它是。因此,在我不理解的表单的渲染中删除了那些字段,因此无法呈现它们。所以,我在渲染之前将它们复制到一个名为read_only的字典中并传递它。
try:
hotel_profile = HotelProfiles.objects.get(pk=hotel_id)
read_only["created_on"] = hotel_profile.fe_created_date
read_only["updated_on"] = hotel_profile.fe_updated_date
f = HotelProfileForm(instance=hotel_profile)
#f.save()
except:
f = HotelProfileForm()
print 'rendering blank form'
return render_to_response('hotels/hotelprofile_form.html', {'f' : f, 'read_only': read_only}, context_instance=RequestContext(request))