Django:让所有模型都依赖用户吗?

fbzyx

我有很多不同的模型。现在,我使用django-allauth添加了用户身份验证。我要做的是使所有模型都依赖于用户。我的意思是,只有用户才能看到他们自己存储的模型数据。实现此目标的最佳方法是什么?我需要为每个模型添加一个ForeignKey吗?

model.py:

class images(models.Model):
    ...

class things(models.Model):
    ...

class devices(models.Model):
    ...

class messages(models.Model):
    ...

#and so on...
威廉·范昂塞姆

我是否需要为ForeignKey每个模型添加一个

是的,但是您不必更改所有模型,可以使用抽象的基本模型:

from django.conf import settings

class OwnedModel(models.Model):
    owner = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE
    )
    
    class Meta:
        abstract = True

然后在所有子类中使用它:

class Image(OwnedModel, models.Model):
    # …
    pass

class Thing(OwnedModel, models.Model):
    # …
    pass

class Device(OwnedModel, models.Model):
    # …
    pass

class Message(OwnedModel, models.Model):
    # …
    pass

在您的视图中,您将不得不过滤用户。在基于类的视图上,您​​可以使用mixin轻松做到这一点:

from django.contrib.auth.mixins import LoginRequiredMixin

class OwnedMixin(LoginRequiredMixin):
    def get_queryset(self, *args, **kwargs):
        return super().get_queryset(*args, **kwargs).filter(
            owner=self.request.user
        )

    def form_valid(self, form):
        form.instance.owner = self.request.user
        return super().form_valid(form)

该mixin也可以用于和,CreateViewUpdateView自动为创建/更新的对象设置所有者。

那么您可以在ListViews,DetailViews等中使用这些

class ImageListView(OwnedMixin, ListView):
    # …

class DeviceDetailView(OwnedMixin, DetailView):
    # …

class ThingCreateView(OwnedMixin, CreateView):
    # …

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我的用户控件上的所有基本属性都需要依赖属性吗?

来自分类Dev

当所有依赖项都改变时,useEffect吗?

来自分类Dev

所有依赖项都无法解决?

来自分类Dev

所有模型值都显示在URL中,这正常吗?

来自分类Dev

所有分支都相等吗?

来自分类Dev

所有同态都正确吗?

来自分类Dev

使所有出现的单词都大写吗?

来自分类Dev

Django:检索分配给用户模型的所有测试模型实例的所有详细信息

来自分类Dev

并非所有模型都填充collection.reset

来自分类Dev

所有容器都具有.size()函数吗?

来自分类Dev

如何在Django Serializer中按用户ID检索所有模型数据?

来自分类Dev

有一种干净的方法可以在Django中向某些用户隐藏模型属性吗?

来自分类Dev

有一种干净的方法可以在Django中向某些用户隐藏模型属性吗?

来自分类Dev

所有类的序列号都相同吗?

来自分类Dev

Windows中的所有控件都称为通用控件吗?

来自分类Dev

所有Android设备都允许调试吗?

来自分类Dev

“不要问”,不是所有方法都无效吗?

来自分类Dev

不是所有控制路径都返回值吗?

来自分类Dev

所有硬盘都适合于外部机柜吗?

来自分类Dev

所有Android设备都允许调试吗?

来自分类Dev

所有iPad的图像大小和后缀都相同吗?

来自分类Dev

Windows中的所有控件都称为通用控件吗?

来自分类Dev

所有npm软件包都需要导出吗?

来自分类Dev

所有clickonce文件都需要在清单中吗?

来自分类Dev

所有对等点都执行链码吗?

来自分类Dev

具有自己数据的用户的Django模型

来自分类Dev

如何访问被request.user阻止的所有用户和所有阻止request.user的用户?每个都是Django模型中的外键

来自分类Dev

从Django模型中获取所有列

来自分类Dev

Django获取相关模型的所有记录

Related 相关文章

  1. 1

    我的用户控件上的所有基本属性都需要依赖属性吗?

  2. 2

    当所有依赖项都改变时,useEffect吗?

  3. 3

    所有依赖项都无法解决?

  4. 4

    所有模型值都显示在URL中,这正常吗?

  5. 5

    所有分支都相等吗?

  6. 6

    所有同态都正确吗?

  7. 7

    使所有出现的单词都大写吗?

  8. 8

    Django:检索分配给用户模型的所有测试模型实例的所有详细信息

  9. 9

    并非所有模型都填充collection.reset

  10. 10

    所有容器都具有.size()函数吗?

  11. 11

    如何在Django Serializer中按用户ID检索所有模型数据?

  12. 12

    有一种干净的方法可以在Django中向某些用户隐藏模型属性吗?

  13. 13

    有一种干净的方法可以在Django中向某些用户隐藏模型属性吗?

  14. 14

    所有类的序列号都相同吗?

  15. 15

    Windows中的所有控件都称为通用控件吗?

  16. 16

    所有Android设备都允许调试吗?

  17. 17

    “不要问”,不是所有方法都无效吗?

  18. 18

    不是所有控制路径都返回值吗?

  19. 19

    所有硬盘都适合于外部机柜吗?

  20. 20

    所有Android设备都允许调试吗?

  21. 21

    所有iPad的图像大小和后缀都相同吗?

  22. 22

    Windows中的所有控件都称为通用控件吗?

  23. 23

    所有npm软件包都需要导出吗?

  24. 24

    所有clickonce文件都需要在清单中吗?

  25. 25

    所有对等点都执行链码吗?

  26. 26

    具有自己数据的用户的Django模型

  27. 27

    如何访问被request.user阻止的所有用户和所有阻止request.user的用户?每个都是Django模型中的外键

  28. 28

    从Django模型中获取所有列

  29. 29

    Django获取相关模型的所有记录

热门标签

归档