擅长:python、mysql、java
<p>有多种方法可以在管理页面中创建只读字段。你对数据库存储的要求有点模糊,所以我仔细考虑一下。</p>
<p>必须首先在<code>admin.py</code>中注册AdminModel:</p>
<pre><code>from django.contrib import admin
from yourapp.models import YourModel
class YourAdmin(admin.ModelAdmin):
pass
admin.site.register(YourModel, YourAdmin)
</code></pre>
<p>现在你可以添加不同的行为。例如,可以添加“编辑/添加”页中显示的字段列表:</p>
<pre><code>class YourAdmin(admin.ModelAdmin):
fields = ['field1', 'field2']
</code></pre>
<p>这可以是模型字段、模型属性或模型方法的名称。方法显示为只读。</p>
<p>如果希望一个字段为只读,请显式添加以下内容:</p>
<pre><code>class YourAdmin(admin.ModelAdmin):
fields = ['field1', 'field2']
readonly_fields = ['field2']
</code></pre>
<p>然后您可以选择通过添加同名的方法完全覆盖字段的显示。您甚至不需要具有该名称的模型字段/方法,然后:</p>
<pre><code>class YourAdmin(admin.ModelAdmin):
fields = ['field1', 'field2']
readonly_fields = ['field2']
def field2(self, obj):
return '*** CLASSIFIED *** {}'.format(obj.field2)
</code></pre>
<p>使用<code>django.utils.safestring.mark_safe</code>还可以返回HTML代码。</p>
<p>管理员的所有其他选项都可用,除了小部件配置,因为它只适用于可写字段。</p>