如何为只返回登录用户拥有的数据的queryset编写Mixin?

2024-06-14 20:08:04 发布

您现在位置:Python中文网/ 问答频道 /正文

如何为CBV编写一个通用Mixin,以便queryset只返回登录用户拥有的数据?你知道吗

在django有可能吗?你知道吗

如果是…有人能给我具体的建议或回答如何在django。。。你知道吗

谢谢


Tags: 数据django用户mixin建议querysetcbv
1条回答
网友
1楼 · 发布于 2024-06-14 20:08:04

就像这样

class MyMixin:

    def get_queryset(self):
        qs = super(MyMixin, self).get_queryset()
        return qs.filter(owner=self.request.user)

如果你需要更灵活的方法,你可以做

class MyMixin:
    my_field = None
    def get_queryset(self):
        qs = super(MyMixin, self).get_queryset()
        return qs.filter(**{self.my_field=self.request.user})

而在每一个类中都比使用mixin你需要将这个字段替换为用户的例子

from django.db import models
class MyModel(models.Model):
    user_owner = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
    )

然后在列表视图中使用模型MyModel实现mixin。t型

from django.views import generic

class MyModelListView(MyMixin, generic.ListView):
    model = MyModel
    my_field = "user_owner"

var my\ u字段必须与模型中的字段同名

相关问题 更多 >