2011-06-25 19 views
1

相關的條目我有兩個型號:自定義Django管理行動,消除由ForeignKey的

A(models.Model): 
    field = models.IntegerField() 

B(models.Model): 
    f = models.ForeignKey(A) 

而且在管理面板我有自定義操作,從而清除(復位)在Model A一些信息:

def clear_something(modeladmin, request, queryset): 
    queryset.update(field=0) 

我如何制定自定義操作clear_something刪除所有相關的Model B條目?

回答

2

假設查詢集是一個集合A的,你應該能夠遍歷並刪除了「b_set」(反向FK查找)每一個,就像這樣:

def clear_something(modeladmin, request, queryset): 
    queryset.update(field=0) 
    for a in queryset: 
     a.b_set.all().delete() 

或者,使用B的模型管理器:

def clear_something(modeladmin, request, queryset): 
    queryset.update(field=0) 
    for a in queryset: 
     B.objects.filter(f=a).delete()