gpt4 book ai didi

Django 每个对象的权限

转载 作者:行者123 更新时间:2023-12-04 02:06:04 26 4
gpt4 key购买 nike

我有用户,每个用户都与他们被允许访问的房地产列表相关联。多个用户可能有权查看同一个站点。

我将如何在 django 中进行设置?

我有:

class UserProfile(models.Model):
user = models.OneToOneField(User)
last_session_time_online = models.IntegerField()
total_time_online = models.IntegerField()
def __unicode__(self):
return self.user


class Site(models.Model):
site_name = models.CharField(max_length = 512)
...Other stuff...
def __unicode__(self):
return self.user

最佳答案

这是基本的多对多的东西:

 class Site(models.Model):
site_name = models.CharField(max_length = 512)
allowed_users = models.ManyToManyField(User)

...

sam = User.objects.get(username = 'sam')
frodo = User.objects.get(username = 'frodo')

hobbithole = Site.objects.get(site_name = 'The Hobbit Hole')
hobbithole.allowed_users.add(sam, frodo)

frodo.site_set.all() # Should return "The Hobbit Hole" object, and any other place frodo's allowed to visit.

somesite.allowed_users.exists(user = frodo) # returns True if frodo is in the site's set of allowed users.

如果你不想弄乱 Site ,您还可以创建一个中间“直通”表。这会创建一个间接层,但如果需要,您可以将内容添加到直通表中,例如权限程度。您可以使用 auth模块的 groups该表上的功能以定义“有权访问 key 的组”和“可以修改属性的组”等。

Many To Many Fields in Django

关于Django 每个对象的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7277853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com