Has*_*sek 35 python django admin
我正在使用django 1.4并且我有一个many2many字段,所以在创建管理站点时我想将此字段添加为内联,这里有一些代码:
class SummaryInline(admin.TabularInline):
model = ParserError.summaries.through
class MyClassAdmin(admin.ModelAdmin):
list_display = ('classifier', 'name', 'err_count', 'supported')
fields = ('classifier', 'name', 'err_count', 'err_classifier', 'supported')
inlines = (SummaryInline,)
readonly_fields = ('classifier', 'err_count')
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何才能使内联字段只读?
Has*_*sek 55
经过一段时间试图找到我想出的名字,感谢这个答案,所以我检查了名字,self.opts.local_fields找到了中间名的名称并添加到了readonly_fields,设置can_delete为False.
class SummaryInline(admin.TabularInline):
model = ParserError.summaries.through
readonly_fields = ('myclasssummary',)
can_delete = False
Run Code Online (Sandbox Code Playgroud)
很简单,但我花了一些时间,所以我发现在这里添加它是一个好主意.
Kev*_*bhu 32
此外,如果您不希望能够添加/删除行,则可以添加这些定义.
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
Run Code Online (Sandbox Code Playgroud)
tam*_*yte 19
您可以通过添加以下内容使整个内联只读:
class UnitsInline(admin.TabularInline):
def has_change_permission(self, request, obj=None):
return False
Run Code Online (Sandbox Code Playgroud)
这将阻止任何人编辑来自管理员的条目。
另一个防止、添加、删除和将所有内联字段显示为只读的示例:
class ReadOnlyInline(admin.TabularInline):
def has_change_permission(self, request, obj=None):
return False
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
def get_readonly_fields(self, request, obj=None):
return list(super().get_fields(request, obj))
Run Code Online (Sandbox Code Playgroud)
小智 5
谢谢凯瓦尔·帕布
class UnitsInline(admin.TabularInline):
model = Units
extra = 0
verbose_name = 'Units'
verbose_name_plural = 'Units of company'
def has_add_permission(self, request, obj=None):
return False
def has_delete_permission(self, request, obj=None):
return False
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22510 次 |
| 最近记录: |