django-orm - 确保在通过admin_actions更新查询集时调用clean()

时间:2013-02-26 17:15:14

标签: django django-models django-admin

如何确保在执行clean()时调用queryset.update('somefield'=True)方法。我还需要确保抓住ValidationError方法引发的任何clean()

我对django ORM的经验很少。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

使用查询集的clean函数时,不会调用模型'update方法。看看update documentation

您将不得不编写自己的admin_action以确保调用该方法。 docs中有一些例子。

我想你想要像 -

这样的东西
from django.contrib import admin
from yourapp.models import YourModel

def update_and_clean(modeladmin, request, queryset):
    for obj in queryset:
         obj(some_field=True)
         obj.clean()
         obj.save()

class YourModelAdmin(admin.ModelAdmin):
    actions = [update_and_clean]

admin.site.register(YourModel, YourModelAdmin)