【发布时间】:2010-12-27 18:52:00
【问题描述】:
我有以下几点:
class AccountAdmin(models.Model):
account = models.ForeignKey(Account)
is_master = models.BooleanField()
name = models.CharField(max_length=255)
email = models.EmailField()
class Meta:
unique_together = (('Account', 'is_master'), ('Account', 'username'),)
如果我随后在同一个帐户上创建一个与另一个用户名相同的新 AccountAdmin,而不是在模板中显示一个错误,它会因 IntegrityError 而中断并且页面消失。我希望在我看来,我可以去:
if new_accountadmin_form.is_valid():
new_accountadmin_form.save()
我该如何解决这个问题。是否有第二种 is_valid() 类型的方法来检查 DB 是否违反了 unique_together = (('Account', 'is_master'), ('Account', 'username'),) 部分?
我不想在我的视图中捕获 IntegrityError。那是域逻辑与表示逻辑的混合。它违反了 DRY,因为如果我在 2 页上显示相同的表格,我将不得不重复相同的块。它也违反了 DRY,因为如果我对同一事物有两种形式,我必须写相同的 except: 再次。
【问题讨论】:
标签: python django django-models django-views unique-constraint