Интерфейс администратора Django: понимание поведения сохранения формы с параметром фиксацииPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Интерфейс администратора Django: понимание поведения сохранения формы с параметром фиксации

Сообщение Anonymous »

В настоящее время я работаю с интерфейсом администратора Django и столкнулся с неожиданным поведением, связанным с сохранением формы с параметром фиксации. Вот что я пытаюсь понять:
Контекст: я использую пользовательскую форму (DeckCreateForm) с переопределенным методом сохранения для обработки сохранения данных колоды. В этом методе я установил для параметра фиксации значение False, чтобы предотвратить немедленную фиксацию базы данных.
Наблюдение: несмотря на установку параметра фиксации в значение False, при сохранении экземпляра формы через интерфейс администратора появляется что данные формы фиксируются в базе данных.
Необходимо понимание: я ищу разъяснений, почему данные формы фиксируются в базе данных, даже если для фиксации явно установлено значение False. Кроме того, я хочу понять факторы, которые могут повлиять на поведение параметра фиксации в контексте интерфейса администратора Django.
Приложенные усилия: я просмотрел документацию Django относительно сохранения форм и интерфейс администратора, но не нашел четкого объяснения такого поведения. Я также проверил свой код и не обнаружил каких-либо очевидных ошибок или неправильных конфигураций.
Запрос: мне нужны идеи или объяснения от сообщества Django о том, как интерфейс администратора Django обрабатывает формы. сохранение и факторы, которые могут повлиять на поведение параметра фиксации. Кроме того, мы будем очень признательны за любые предложения по устранению неполадок или дальнейшему изучению.
Мой код:
Пользовательская функция сохранения (forms.py):

Код: Выделить всё

def save(self, commit=False):
deck = super().save(commit=False)

if commit:
deck.save()
self.save_m2m()

cleaned_data = self.cleaned_data
word_items = cleaned_data.get('word_items')

with transaction.atomic():
try:
for rank, word_item in enumerate(word_items, start=1):
deck_entry, created = DeckWord.objects.get_or_create(
deck=deck,
word_item=word_item,
defaults={'rank':1}
)
except IntegrityError as e:
raise
return deck
Admin.py

Код: Выделить всё

@admin.register(Deck)
class DeckAdmin(admin.ModelAdmin):
list_display = ['id', 'name', 'description', 'language', 'is_ranked', 'created_by', 'visibility']
form = DeckCreateForm
Любые рекомендации или идеи по этому вопросу будут неоценимы и помогут мне лучше понять поведение интерфейса администратора Django. Заранее благодарим за помощь!

Подробнее здесь: https://stackoverflow.com/questions/785 ... -parameter
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»