1

clean()実行中にメソッドが呼び出されていることを確認するにはどうすればよいですかqueryset.update('somefield'=True)。また、メソッドValidationErrorによってスローされたものを確実にキャッチする必要があります。clean()

私はdjango ORMの経験がほとんどありません。どんな助けでも大歓迎です。

4

1 に答える 1

1

クエリセットの関数を使用する場合、モデルのcleanメソッドは呼び出されません。アップデートのドキュメントupdateをご覧ください。

メソッドが確実に呼び出されるようにするには、独自の 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)
于 2013-02-26T17:55:35.560 に答える