in django У меня есть inlineadmin с некоторыми флажками, я хочу, чтобы при сохранении некоторых условий один из них игнорировался при сохранении.
Я попытался изменить request.POST ['mykey'] или form.data ['mykey'] в save_model () основного класса с request.POST._mutable = True, но django сохранит все в любом случае, и для form.data он говорит, что он неизменен. Я знаю, что могу установить значение для obj.mykey, но как сохранить другие и игнорировать один?
Большое спасибо всем.
ОБНОВЛЕНИЕ
Я строю несколько строк кодов, чтобы объяснить лучше:
models.py
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
admin.py:
from django.contrib import admin
from testB.models import Book, Author
class BookInLine(admin.TabularInline):
model = Book
fields = ['author', 'title']
class AuthorAdmin(admin.ModelAdmin):
inlines = [BookInLine]
def save_model(self, request, obj, form, change):
if request.user.is_superuser:
#do not save first title and do not change existing value
# does not work
# request.POST._mutable = True
# request.POST['id_book_set-0-id']=''
# does not owrk: querydict immutable
# form.data['id_book_set-0-id']=''
pass
super().save_model(request, obj, form, change)
admin.site.register(Author, AuthorAdmin)
Использование has_change_permission не подходит, потому что пользователь должна иметь возможность изменять другие строки заголовка, это проверка бэкенда.