1

голосов
0

ответ
116

Просмотры

One-to-many inline select with django admin 2018 UPDATED

Я столкнулся с той же проблемой, как описано здесь или здесь. Короче говоря: у меня есть 2 модели: книги и Shelf. В админ форме ( «добавить полки») Я хотел бы, чтобы выбрать из книг, которые уже находятся в библиотеке. По умолчанию это не доступно. Я использовал решение (из ссылок выше) и все работает, пока я не пытаюсь «сохранить» новый объект. Ошибка: несохраненная экземпляра модели (Полка: ShelfAlpha) не может быть использован в запросе ОРМ. # Models.py класс Book (models.Model): полки = models.ForeignKey (Полка, пусто = True, нуль = True, related_name = "in_shelf") # admin.py класс ShelfForm (forms.ModelForm): класс Meta: модель = Полочные книги = forms.ModelMultipleChoiceField (QuerySet = Book.objects.all ()) защиту __init __ (самоповреждения, * арг, ** kwargs): супер (ShelfForm, самостоятельно) .__ Инициализационные __ (* Args, ** kwargs), если сам. пример: если self.instance.in_shelf: self.fields [ 'книга'] = начальная self.instance.in_shelf.all () еще.:. [] Защита сохранить self.fields [ 'книги'] = начальный (самоповреждения, * арг, ** kwargs): экземпляр = супер (ShelfForm, самость) .save (фиксации = False) self.fields [ 'книги'] initial.update (полка = None) self.cleaned_data [ 'книги'] обновление (полки =.. экземпляр) возвращает экземпляр Похоже, в 2014 году работал, но теперь это не так. Я был бы признателен за помощь! initial.update (полка = None) поля [ «книга»]. self.cleaned_data [ «книга»]. Обновление (полка = экземпляр) возвращает экземпляр Похоже, в 2014 году работали, но теперь это не так. Я был бы признателен за помощь! initial.update (полка = None) поля [ «книга»]. self.cleaned_data [ «книга»]. Обновление (полка = экземпляр) возвращает экземпляр Похоже, в 2014 году работали, но теперь это не так. Я был бы признателен за помощь!
Artur Bednarz