Django auth groups 找不到组并且不给用户权限,不管他们在哪个组

Django auth groups not finding groups and does not give permission to users, regardless of the group in which they are

我正在制作一个简单的房地产应用程序,其中必须将用户分成两个不同的组。普通用户和经纪人。我正在使用 Django 管理后端来创建用户组。我还使用 post_save 信号将所有新用户分配给普通用户组。乍一看,它运行良好,在 Django 管理中,它向我显示用户在相应的组中。但是当我尝试打印 self.request.user.groups 时,值是 None。此外,当我尝试检查用户是否有权执行某些操作时,无论我授予视图的权限如何,无论用户是否具有权限,我检查的视图总是给我 403 Forbidden。我分别使用基于 class 的视图和 PermissionRequiredMixin。 这是我的用户模型:

class DjangoEstatesUser(auth_models.AbstractBaseUser, auth_models.PermissionsMixin):
USERNAME_MAX_LENGTH = 30

username = models.CharField(
    max_length=USERNAME_MAX_LENGTH,
    unique=True,
)

date_joined = models.DateTimeField(
    auto_now_add=True,
)

is_staff = models.BooleanField(
    default=False,
)

USERNAME_FIELD = 'username'

objects = DjangoEstatesUserManager()

还有将新用户分配到组的信号:

 @receiver(post_save, sender=DjangoEstatesUser)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        instance.groups.add(Group.objects.get(name='Users'))

这是我试图针对不同用户限制的一个视图:

class AddEstateView(auth_mixins.LoginRequiredMixin, auth_mixins.PermissionRequiredMixin, views.CreateView):
permission_required = 'auth_permission.add_estate'
template_name = 'main/estates/add_estate.html'
form_class = AddEstateForm

def get_form_kwargs(self):
    kwargs = super().get_form_kwargs()
    kwargs['user'] = self.request.user
    return kwargs

def get_success_url(self):
    return reverse_lazy('profile details', kwargs={'pk': self.object.user_id})

这些是具有权限的组。 brokers_group 和 users_group.

这些是我的 db_tables 和 auth_permission_table.

我不知道哪里错了或哪里做的不对,如有任何帮助,我们将不胜感激! 提前致谢!

self.request.user.groups 总是打印 None:那是 RelatedManager [Django-doc],而不是 QuerySet。经理将打印带有 None 的模型名称,因此对于名为 ModelNameModelapp_name,它打印:

app_name.ModelName.None

您使用 self.request.user.groups.all() 打印项目:

print(self.request.user.groups<strong>.all()</strong>)