【发布时间】:2014-03-16 03:45:53
【问题描述】:
我想获取所有依赖(具有外键)特定 auth_user(用户模型)的 django 模型
这个的 SQL 版本看起来像 something like this,除了这个例子不是我想要的递归。
理想情况下,我想删除与特定User 的任何相关数据而不破坏该用户,例如触发级联删除但跳过根对象的删除,在本例中为用户。
【问题讨论】:
标签: python mysql django model cascade-filtering
我想获取所有依赖(具有外键)特定 auth_user(用户模型)的 django 模型
这个的 SQL 版本看起来像 something like this,除了这个例子不是我想要的递归。
理想情况下,我想删除与特定User 的任何相关数据而不破坏该用户,例如触发级联删除但跳过根对象的删除,在本例中为用户。
【问题讨论】:
标签: python mysql django model cascade-filtering
您可以为 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__...,它们已经设置为其他有意义的值,我会破坏应用程序。