【发布时间】:2012-07-18 14:21:10
【问题描述】:
我希望管理员能够编辑普通用户无法编辑的字段。例如作者或订阅者等。
我试过这个:Django admin: How to display a field that is marked as editable=False' in the model?
(答案中给出的可编辑部分)
但该字段仍然无法出现在管理页面上。
这里有一些信息供参考:
#models.py
class MyModel(models.Model):
myfield = models.ManyToManyField(User, blank=True, editable=False)
#admin.py
class MyModelAdminForm(forms.ModelForm):
myfield = models.ManyToManyField(User, blank=True, editable=True)
class Meta(object):
model = MyModel
class MyModelAdmin(admin.ModelAdmin):
form = MyModelAdminForm
admin.site.register(MyModel, MyModelAdmin)
如果我将模型更改为状态 editable=True,那么我会在我的管理页面上看到该字段。 (如预期)
我正在使用 Django 1.3、Python 2.6
【问题讨论】:
-
这种类型的字段不需要用于此目的。它需要保存系统创建的数据,如
my_field = models.DateTimeField(auto_now_add=True, editable=False)。您可以为MyModelAdmin创建规则,其中 check 是用户 superadmin 或只是用户并显示另一个字段列表。 -
@b1- 想想你是对的。 editable=False 字段只能用于在表单之外设置的字段。因为我坚持要在表单中显示该字段,所以这是错误的参数。 exclude list 是更好的选择。
-
@b1 在自动化测试(又名单元测试)中编辑这些字段怎么样?
-
@Buttons840 有什么用?更好地检查测试:模型是否自动保存在字段中的正确值?
标签: django django-forms django-admin