【问题标题】:Get all Django cascading dependent models of an auth_user获取 auth_user 的所有 Django 级联依赖模型
【发布时间】:2014-03-16 03:45:53
【问题描述】:

我想获取所有依赖(具有外键)特定 auth_user(用户模型)的 django 模型

这个的 SQL 版本看起来像 something like this,除了这个例子不是我想要的递归。

理想情况下,我想删除与特定User 的任何相关数据而不破坏该用户,例如触发级联删除但跳过根对象的删除,在本例中为用户。

【问题讨论】:

    标签: python mysql django model cascade-filtering


    【解决方案1】:

    您可以为 User 模型定义所有 ForeignKeys 或 M2M 键的 related_name,如下所示:

    # you models.py
    class SomeModel(models.Model):
        name = models.CharField(...)
        user = models.ForeignKey(related_name='userrelated__somemodel')
    
    # views.py
    # you can get all dependence names of user model attributes
    all_user_attrs = dir(request.user)
    # ['userrelated__somemodel1', 'userrelated__somemodel2', ...]
    # and here you can get all names only related fields
    related_fields = filter(lambda x: 'userrelated__' in x, all_user_attrs)
    # and if you want to get this field, you can do this:
    for attr_name in related_fields:
        attr = getattr(request.user, attr_name, None)
        print attr
    

    【讨论】:

    • 这看起来不错,但我无法在每个模型上更改 related_name='userrelated__...,它们已经设置为其他有意义的值,我会破坏应用程序。
    • 另外,您可以从您的项目中获取所有默认用户方法和属性,以及所有方法和属性。不同的是 Fkeys、m2m-keys 和 o2o keys :]
    猜你喜欢
    • 2021-04-11
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 2012-03-23
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多