擅长:python、mysql、java
<p>(编写时,Django<;2.2)</p>
<p>对于Django中的<code>unique_together</code>,您不能这样做,大概是因为并不是所有的db后端都能够支持它。在</p>
<p>您可以在应用程序层使用模型验证来完成:<br/>
<a href="https://docs.djangoproject.com/en/dev/ref/models/instances/#validating-objects" rel="nofollow noreferrer">https://docs.djangoproject.com/en/dev/ref/models/instances/#validating-objects</a></p>
<p>例如</p>
<pre><code>class MyModel(models.Model):
field_a = models.CharField()
field_b = models.CharField()
validated = models.BooleanField(default=False)
def clean(self):
if not self.validated:
return
existing = self.__class__.objects.filter(field_a=self.field_a,
field_b=self.field_b).count()
if existing > 0:
raise ValidationError(
"field_a and field_b must be unique if validated=True"
)
</code></pre>
<p>请注意,您可能需要手动调用模型验证,即</p>
^{pr2}$
<p>保存模型时不会自动执行此操作。另一方面,当使用ModelForm时,它是自动完成的,即</p>
<pre><code>if form.is_valid():
instance = form.save()
</code></pre>