首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"unique = True“- Django模型-对每个用户来说都是唯一的,而不是每个人提交的所有数据都是唯一的

"unique = True“- Django模型-对每个用户来说都是唯一的,而不是每个人提交的所有数据都是唯一的
EN

Stack Overflow用户
提问于 2021-12-24 05:59:39
回答 1查看 140关注 0票数 0

我目前在Django中有一个模型,并且我已经制作了一个字段unique=True,这样就不会向数据库提交任何副本。我的问题是它扩展到所有用户。我的意思是用户1应该能够提交"Example1“和"Example2”,再也不应该能够提交"Example1“或"Example2”,然后User2应该会出现,并且还能够提交“Example1E 210”和“E 111Example2E 212/code>”,但是他们不能提交,因为用户1已经提交了。

是否有一种方法,我可以得到一个unique=True,但单独为每个用户,而不只是连体,就像现在一样。

提前谢谢。下面的代码。

问题存在于type =中,我的用户也是由ForeignKey定义的。

代码语言:javascript
运行
复制
class Field_Repo1(models.Model):
    user = models.ForeignKey(User, default=True, related_name="Field_Repo1", on_delete=models.PROTECT)
    title = models.CharField(max_length=20, verbose_name='Title of Field')
    type = models.CharField(max_length=200, blank=True, unique=True, null=True, verbose_name='Field')

    class Meta:
        ordering = ['-type']

    def __str__(self):
        return str(self.user) or 'NONE'

    def get_absolute_url(self):
        return reverse('repo1')

更新的代码,运行

代码语言:javascript
运行
复制
class Field_Repo1(models.Model):
user = models.ForeignKey(User, default=True, related_name="Field_Repo1", on_delete=models.PROTECT)
title = models.CharField(max_length=20, verbose_name='Title of Field')
type = models.CharField(max_length=22, choices=FIELDS, verbose_name='Field')

class Meta:
    ordering = ['-type']
    constraints = [
        models.UniqueConstraint(fields=['user', 'type'], name='unique type for each user')
    ]

def __str__(self):
    return str(self.user) or 'NONE'

def get_absolute_url(self):
    return reverse('repo1')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-24 06:22:27

您需要使用UniqueConstraint

代码语言:javascript
运行
复制
class Field_Repo1(models.Model):
    user = models.ForeignKey(User, default=True, related_name="Field_Repo1", on_delete=models.PROTECT)
    title = models.CharField(max_length=20, verbose_name='Title of Field')
    type = models.CharField(max_length=200, blank=True, unique=True, null=True, verbose_name='Field')

    def __str__(self):
        return str(self.user) or 'NONE'

    def get_absolute_url(self):
        return reverse('repo1')

    class Meta:
        ordering = ['-type']
        constraints = [
            models.UniqueConstraint(fields=['user', 'title'], name='unique title for each user')
        ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70469977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档