自定义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条目?

假设queryset是一组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()

最新更新