2014-02-17 44 views
0

我想獲得的是取決於所有的Django模型(有外鍵)在一個特定的auth_user(用戶模式)獲取所有Django的級聯的AUTH_USER

的相關模型這樣做的SQL版本看起來something like this除了將實例不是我想要的遞歸。

理想情況下,我想刪除任何相關數據到特定的User而不銷燬該用戶,例如觸發級聯刪除但跳過刪除根對象,在本例中爲用戶。

回答

1

您可以定義所有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 
+0

這看起來不錯,但我不能改變'related_name ='用戶相關__...'每個模型,他們是已經設置爲其他有意義的價值,我會打破應用程序。 –

+0

另外,您可以獲取項目中的所有默認用戶方法和attrs以及所有方法和attrs。不同的是Fkeys,m2m-keys和o2o鍵:] – freylis