как динамически изменить значение записи при изменении другого значения из django-admin - PullRequest
0 голосов
/ 01 февраля 2019
from django.contrib import admin
from .models import Order

class OrderAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'product', 'email','is_valid','is_delivered', 'order_date')
    list_display_links = ('id', 'name',)
    list_editable = ('is_valid','is_delivered')
    search_fields = ('name', 'email', 'product')
    list_per_page = 25

admin.site.register(Order, OrderAdmin)

Здесь, когда администратор изменяет is_valid, я хочу уменьшить значение другого целочисленного поля на 1

1 Ответ

0 голосов
/ 01 февраля 2019

Поскольку вас интересует только добавление некоторой операции предварительного сохранения из ModelAdmin, вам следует переопределить метод save_model, уменьшить указанное значение, и запустить метод Model.save():

from django.contrib import admin

class OrderAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'product', 'email','is_valid','is_delivered', 'order_date')
    list_display_links = ('id', 'name',)
    list_editable = ('is_valid','is_delivered')
    search_fields = ('name', 'email', 'product')
    list_per_page = 25

    def save_model(self, request, obj, form, change):
        # decrement logic here and then trigger save as below
        # you have access to the model through obj and form data through form
        # e.g.: obj.is_valid and form.changed_data are here
        super().save_model(request, obj, form, change)

admin.site.register(Order, OrderAdmin)
...