我正在尝试使用每个Accounts
唯一的用户名创建Server
class Server(models.Model):
name = models.CharField(primary_key=True, max_length=50, unique=True)
class Account(models.Model):
server = models.ForeignKey(Server,on_delete=models.CASCADE)
username = models.CharField(max_length=100)
account_name = models.CharField(max_length=100)
password = models.CharField(max_length=50)
现在我正在
duplicate key value violates unique constraint "zuya_aaccount_username_5f0a17d4_uniq"
当我创建一个非唯一的
account_name
时,它没有显示任何问题 最佳答案
您可以指定 UniqueConstraint
[Django-doc]来指定两个(或更多字段)在一起应该是唯一的:
class Account(models.Model):
server = models.ForeignKey(Server,on_delete=models.CASCADE)
username = models.CharField(max_length=100)
account_name = models.CharField(max_length=100)
password = models.CharField(max_length=50)
class Meta:
constraints = [
models.UniqueConstraint(
fields=['server', 'account_name'],
name='unique_username_per_server'
)
]
因此,这意味着对于同一服务器,不能存在两个具有相同
Account
的account_name
,反之亦然。在django-2.2之前,您可以使用
unique_together
[Django-doc]元选项:class Account(models.Model):
server = models.ForeignKey(Server,on_delete=models.CASCADE)
username = models.CharField(max_length=100)
account_name = models.CharField(max_length=100)
password = models.CharField(max_length=50)
class Meta:
unique_together = [['server', 'account_name']]
关于python - 没有唯一参数的唯一值错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61710157/