擅长:python、mysql、java
<h2>扩展ModelAdmin</h2>
<p>如果您想在表单中实现每用户逻辑,您可能需要扩展您的<code>ModelAdmin</code>,而不是表单。在</p>
<p>在这里,您需要重写<code>ModelAdmin</code>的<code>save_form</code>方法。<br/>
<code>save_form</code>在<code>self</code>:<code>request, form, change</code>中加入3个参数。您将执行以下操作:</p>
<pre><code>def save_form(self, request, form, change):
instance = super(MyModelAdmin, self).save_form(request, form, change)
if instance.published and not user.has_perm('mark_published'):
instance.published = False #You could be displaying a message here.
return instance
</code></pre>
<p>通常,Django类有很多钩子,所以您可以在那里插入自定义逻辑。在</p>
<h2>你为什么要这么做?在</h2>
<p>在这里,您只是隐藏了输入,但是任何有一个像样的浏览器的人都可以修改这个值并在您的<code>published</code>输入中发布<code>True</code>。在</p>