0
我想獲得的是取決於所有的Django模型(有外鍵)在一個特定的auth_user
(用戶模式)獲取所有Django的級聯的AUTH_USER
的相關模型這樣做的SQL版本看起來something like this除了將實例不是我想要的遞歸。
理想情況下,我想刪除任何相關數據到特定的User
而不銷燬該用戶,例如觸發級聯刪除但跳過刪除根對象,在本例中爲用戶。
我想獲得的是取決於所有的Django模型(有外鍵)在一個特定的auth_user
(用戶模式)獲取所有Django的級聯的AUTH_USER
的相關模型這樣做的SQL版本看起來something like this除了將實例不是我想要的遞歸。
理想情況下,我想刪除任何相關數據到特定的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 ='用戶相關__...'每個模型,他們是已經設置爲其他有意義的價值,我會打破應用程序。 –
另外,您可以獲取項目中的所有默認用戶方法和attrs以及所有方法和attrs。不同的是Fkeys,m2m-keys和o2o鍵:] – freylis