<p>假设您的更新是通过一个表单(正如使用<code>form_valid()</code>所建议的那样),也许您可以使用表单<code>clean()</code>方法,如<a href="https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-and-validating-fields-that-depend-on-each-other" rel="nofollow">the documentation</a>所述。这允许您对相互依赖的字段执行检查。文档中还有一个示例,可以让您更进一步。在</p>
<p><strong>更新</strong></p>
<p>从您的评论中,我了解到您试图在<code>EnvUpdate</code>内部使用<code>clean()</code>,它继承了基于类的<code>UpdateView</code>视图。所有通过<code>UpdateView</code>提供的mixin显然没有提供<code>clean()</code>方法,因此不能重写它。在</p>
<p>我实际上指的是表单类中的<code>clean()</code>(如下链接)。因此,看起来您需要创建自己的ModelForm类,类似于:</p>
<pre><code>class EnvappsForm(forms.ModelForm):
class Meta:
model = Capacity.models.Envapps
fields = ['functional_count']
def clean(self):
cleaned_data = super(ContactForm, self).clean()
if cleaned_data['functional_count'] >= form.instance.current_count:
raise ValidationError('too large')
return cleaned_data
</code></pre>
<p>然后在你看来:</p>
^{pr2}$
<p>注意:这是完全未经测试的!我不知道<code>clean()</code>中的比较是否有效(例如,如果form.instance.current_计数,wheter<code>EnvUpdate</code>将重写form\u类(不应该,但我从未尝试过)。您甚至可以移除<code>meta</code>子类,并从<code>EnvUpdate</code>中提供<code>model</code>和{<cd13>},就像您在上面所做的那样。你可以很容易地尝试一下。在</p>