如何检查来自不同模型的布尔值对于团队用户是否为真?
How can I check if a boolean from a different model is true for a user of a team?
我想使用以下模型为团队中的用户添加权限:
class Rights(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
team = models.ForeignKey(Teams, on_delete=models.CASCADE)
read = models.BooleanField(default=True)
write = models.BooleanField(default=False)
edit = models.BooleanField(default=False)
一些用户需要能够创建新条目。有些人不允许有这种可能性。那么,如果某个用户发送了一个请求,我该如何检查这些布尔值中的一个或多个对于这个特定用户来说是真还是假?
可以获得指向myuser
和myteam
的Rights
对象,然后检查 read
、write
and/or edit
字段:
right = Rights.objects.get(<strong>user=<em>myuser</em>, team=<em>myteam</em></strong>)
right.read # bool, True or False
right.write # bool, True or False
right.edit # bool, True or False
您可以确保对于每个 user
/team
组合,最多有一条记录包含:
from django.conf import settings
class Right(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
team = models.ForeignKey(Teams, on_delete=models.CASCADE)
read = models.BooleanField(default=True)
write = models.BooleanField(default=False)
edit = models.BooleanField(default=False)
class Meta:
constraints = [
models.<strong>UniqueConstraint(fields=('user', 'team')</strong>, name='unique_per_user_team'<strong>)</strong>
]
Note: It is normally better to make use of the settings.AUTH_USER_MODEL
[Django-doc] to refer to the user model, than to use the User
model [Django-doc] directly. For more information you can see the referencing the User
model section of the documentation.
Note: normally a Django model is given a singular name, so Right
instead of Rights
.
我想使用以下模型为团队中的用户添加权限:
class Rights(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
team = models.ForeignKey(Teams, on_delete=models.CASCADE)
read = models.BooleanField(default=True)
write = models.BooleanField(default=False)
edit = models.BooleanField(default=False)
一些用户需要能够创建新条目。有些人不允许有这种可能性。那么,如果某个用户发送了一个请求,我该如何检查这些布尔值中的一个或多个对于这个特定用户来说是真还是假?
可以获得指向myuser
和myteam
的Rights
对象,然后检查 read
、write
and/or edit
字段:
right = Rights.objects.get(<strong>user=<em>myuser</em>, team=<em>myteam</em></strong>)
right.read # bool, True or False
right.write # bool, True or False
right.edit # bool, True or False
您可以确保对于每个 user
/team
组合,最多有一条记录包含:
from django.conf import settings
class Right(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
team = models.ForeignKey(Teams, on_delete=models.CASCADE)
read = models.BooleanField(default=True)
write = models.BooleanField(default=False)
edit = models.BooleanField(default=False)
class Meta:
constraints = [
models.<strong>UniqueConstraint(fields=('user', 'team')</strong>, name='unique_per_user_team'<strong>)</strong>
]
Note: It is normally better to make use of the
settings.AUTH_USER_MODEL
[Django-doc] to refer to the user model, than to use theUser
model [Django-doc] directly. For more information you can see the referencing theUser
model section of the documentation.
Note: normally a Django model is given a singular name, so
Right
instead of.Rights