标签: django-permissions

向用户添加自定义权限

我希望能够为一些现有用户提供访问视图所需的自定义权限.

我想我需要新的权限添加到Postgres的表auth_permission,但我怀疑有一个更高层次的方式来做到这一点.auth_permission中还有一个用于content_type的列,我不知道它的值应该是什么.

这样做的正确方法是什么?

django django-permissions

21
推荐指数
1
解决办法
3万
查看次数

如何在django中为用户模型添加自定义权限?

在django中默认情况下,当安装了django.contrib.auth运行syncdb时,它会为每个模型创建默认权限...如foo.can_change,foo.can_delete和foo.can_add.要向模型添加自定义权限,可以在模型下添加类Meta:并在那里定义权限,如此处所述https://docs.djangoproject.com/en/dev/topics/auth/#custom-permissions

我的问题是,如果我想为User模型添加自定义权限,该怎么办?喜欢foo.can_view.我可以使用以下代码段执行此操作,

ct = ContentType.objects.get(app_label='auth', model='user')
perm = Permission.objects.create(codename='can_view', name='Can View Users', 
                                  content_type=ct)
perm.save()
Run Code Online (Sandbox Code Playgroud)

但是我想要一些与syncdb很好地结合的东西,例如我自定义模型下的Meta类.我应该在MetaTlass类中使用这些,因为这是扩展用户模型的方法.但这是正确的方法吗?它不会与UserProfile模型联系起来吗?

python django django-permissions

19
推荐指数
2
解决办法
1万
查看次数

django中的行级权限

有没有办法在django中进行行级权限?我以为没有,只是在文档中注意到了这一点:

权限不仅可以针对每种类型的对象进行设置,还可以针对特定对象实例进行设置.通过使用ModelAdmin类提供的has_add_permission(),has_change_permission()和has_delete_permission()方法,可以为同一类型的不同对象实例自定义权限.

https://docs.djangoproject.com/en/dev/topics/auth/

但我没有看到任何关于如何实际实现每个实例权限的文档

django django-models django-permissions

17
推荐指数
4
解决办法
1万
查看次数

Django迁移失败,出现"__fake __.DoesNotExist:权限匹配查询不存在."

在Django 1.8项目中,当有以下代码时,我的迁移工作正常:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations
from django.conf import settings


def update_site_forward(apps, schema_editor):
    """Add group osmaxx."""
    Group = apps.get_model("auth", "Group")
    Group.objects.create(name=settings.OSMAXX_FRONTEND_USER_GROUP)


def update_site_backward(apps, schema_editor):
    """Revert add group osmaxx."""
    Group = apps.get_model("auth", "Group")
    Group.objects.get(name=settings.OSMAXX_FRONTEND_USER_GROUP).delete()


class Migration(migrations.Migration):

    dependencies = [
        ('auth', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(update_site_forward, update_site_backward),
    ]
Run Code Online (Sandbox Code Playgroud)

此组是在迁移中创建的,因为它应在Web应用程序的所有安装中可用.为了使它更有用,我还想给它一个默认权限,所以我改为update_site_forward:

def update_site_forward(apps, schema_editor):
    """Add group osmaxx."""
    Group = apps.get_model("auth", "Group")
    Permission = apps.get_model("auth", "Permission")
    ContentType = apps.get_model("contenttypes", "ContentType")
    ExtractionOrder …
Run Code Online (Sandbox Code Playgroud)

django django-permissions django-migrations

14
推荐指数
1
解决办法
4423
查看次数

在迁移中添加django管理员权限:不存在权限匹配查询

我想在手动编写的迁移中添加一些组并为其分配权限,但如果我在干净的DB上运行它,则只有在运行所有迁移后才会创建权限.

我找到了这张票:https: //code.djangoproject.com/ticket/23422但我不能在那里发表评论(我可能会在表达对GeoDjango文档的不满之后被禁止),所以我将分享对解决方案的改进在下面.

django django-permissions django-migrations

14
推荐指数
2
解决办法
5726
查看次数

Django:基于模型实例的权限

我有一个模型class Project,对于每个模型实例,应该有一个可以编辑该实例的"组"用户.我想我可以添加另一个名为ProjectEditor的模型类来添加这些编辑器.有没有更好的方法来实现这个?检查权限怎么样?我也需要写自己的权限方法,对吧?

谢谢Eric

django permissions django-models django-permissions

13
推荐指数
2
解决办法
6145
查看次数

Django:为特定模型实例添加权限

我正在寻找实现用户权限的最佳方法,以允许用户编辑特定的模型实例.

例如,我有两个模型:

model RadioChannel(models.Model):
    name = models.CharField(max_length=150, unique= True)
    number = models.IntegerField( unique= True)

model ProgramSchedule(models.Model):
    channel = models.ForeignKey("RadioChannel")
    name = models.CharField(max_length=150, unique= True)
    start_time = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

现在我的运营商是我的内置Django用户.我想为这些用户创建组,以便他们只能添加/删除/编辑允许的ProgramSchedules.另外,我想将这些用户的组添加到管理面板.

谢谢.

django django-permissions

13
推荐指数
3
解决办法
7077
查看次数

Django模型权限未在管理员上获取

我已经为我的模型添加了权限,我想在管理员中创建一个使用此权限的组.

问题是新权限未列在权限列表中.

我需要做些什么才能将它添加到该列表中?

    class Meta:
        permissions = (
            ("add_remove_job", "Can add/remove jobs"),
        )
Run Code Online (Sandbox Code Playgroud)

解决方案:这是South的已知限制,解决方案是执行syncdb --all

django django-admin django-permissions

12
推荐指数
2
解决办法
5164
查看次数

为新用户提供默认权限或默认组

默认行为似乎是新用户没有权限而没有组.但是,我不想手动授予每个新用户基本权限,我认为他们不想等我这样做.

我应该如何为新用户分配默认权限?

已经提出了一些类似的问题,但对一般情况没有明确的答案:

我正在使用python-social-auth所以我没有自己的创建用户表单和视图,我想其他人都设置了默认权限.我假设我需要某种类型的on-user-create挂钩,但不确定最干净的方法是什么.

这与创建可能授予用户的默认可能权限无关,但作为参考,

django django-permissions python-social-auth

12
推荐指数
1
解决办法
5055
查看次数

以编程方式创建django组

我想以编程方式在django中创建组,但不是在视图中创建组,而是在模型中创建组(例如使用迁移).怎么做?谷歌和文档中没有关于它的信息(至少不在这里:https://docs.djangoproject.com/en/1.7/topics/auth/default/#groups)

django django-permissions

10
推荐指数
2
解决办法
1733
查看次数