我显然不明白如何正确地做到这一点,有人可以让我直截了当.这是模型:
class Team(models.Model):
teamID=models.CharField(max_length=255) #this will be generated on the iPad
name=models.CharField(max_length=255)
slug=models.SlugField(max_length=50)
teamNumber=models.CharField(max_length=30)
checkIn=models.DateTimeField(default=datetime.now())
totalScore=models.IntegerField(max_length=6)
class Meta:
unique_together = ("teamID", "name", "slug", "teamNumber", "totalScore")
Run Code Online (Sandbox Code Playgroud)
如果我连续两次提交,则会保存所有内容.哎呀!
Ste*_*son 23
正如aganders3所提到的那样,约束是在数据库级别强制执行的; 我假设您使用的SQLite数据库不支持这种约束.
它通过管理员按预期工作的原因是它正在进行唯一性检查(它不严格依赖于数据库来发出约束违规信号).
您可以切换到支持这种唯一性约束的数据库引擎(MySQL或Postgres可以工作),或者您可以查看使用信号添加签入:http://djangosnippets.org/snippets/1628/
Ste*_*lim 12
尝试使用正确的嵌套元组语法((foo,bar),)
而不仅仅是(foo, bar)
?
https://docs.djangoproject.com/en/dev/ref/models/options/#unique-together
小智 8
是的,paremeter unique_together作为输入接收元组的元组,我没有测试过两个元素的元组,但它应该工作
为你的例子:
unique_together = (("teamID", "name"), ("slug", "teamNumber"))
Run Code Online (Sandbox Code Playgroud)
要么:
unique_together = (("teamID", "name", "slug", "teamNumber", "totalScore"))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23812 次 |
最近记录: |