我有两种模式:
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
条目?
答案 0 :(得分:2)
假设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()