Python 没有唯一参数的唯一值错误

Python 没有唯一参数的唯一值错误,python,django,error-handling,django-admin,django-2.2,Python,Django,Error Handling,Django Admin,Django 2.2,我正在尝试创建帐户,每个服务器的用户名都是唯一的 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.CharFi

我正在尝试创建
帐户
,每个
服务器的用户名都是唯一的

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)
现在我得到了

重复键值违反了唯一约束“zuya\u aaccount\u username\u 5f0a17d4\u uniq”

当我创建一个非唯一的
帐户\u名称时
不会显示任何问题

您可以指定一个来指定两个(或多个)字段一起是唯一的:

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'
            )
        ]
您可以指定,以指定两个(或多个)字段一起应是唯一的:

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'
            )
        ]

那绝对是成功的!谢谢你,真的做到了!非常感谢。