Django用户ForeignKey和唯一对象名称

lol*_*olz 2 python django django-models django-forms django-views

class User:
    username = (unique=True)

class Object:
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    name = ()
Run Code Online (Sandbox Code Playgroud)

我如何拥有多个同名的对象,但每个用户只能有一个唯一的对象名称。

例如:

user1只能有一个唯一的Object名称“dog”,user2也只能有一个唯一的Object名称“dog”,因此可以有多个同名的Object,但每个用户只能有一个Object通过外键命名为“dog”。如果 user1 尝试创建另一个名为“dog”的对象,则会引发类似表单验证错误的错误。

Ala*_*air 5

您可以使用该unique_together选项来添加数据库约束。

class MyModel(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    name = models.CharField(max_length=30)

    class Meta:
        unique_together = ['user', 'name']
Run Code Online (Sandbox Code Playgroud)