Хорошо, задание этого вопроса не принесло мне ничего, кроме отличного значка для моего профиля. В конце концов я обнаружил следующее решение. Это проще, чем я ожидал, но мне пришлось задать еще один вопрос здесь , потому что после реализации выбор из ModelChoiceField на странице администратора и сохранение не создают отношения внешнего ключа, как ожидалось.
В любом случае, по решению:
Модель My Art содержит логическое поле "has_storypak", чтобы указать, имеет ли оно отношение и экземпляр модели Storypak. Так как я ожидал, что экземпляры Art будут иметь отношение только к одному Storypak, в то время как Storypaks может иметь много связанных художественных работ, я написал следующее настраиваемое поле, содержащее только те экземпляры, для которых значение has_storypak было False
.
class RuntimeArtSelectForm(forms.ModelForm):
storypak_orphan = forms.ModelChoiceField(label="Art",
queryset=Art.objects.filter(has_storypak=False))
class Meta:
model = Art
fields = ('storypak_orphan',)
Затем я добавил эту форму для встроенной формы для модели Art ...
class ArtInline(admin.TabularInline):
model = Art
form = RuntimeArtSelectForm
... и включил ArtInline в ModelAdmin для Storypak. Это дало мне выпадающий список, содержащий отфильтрованный список объектов модели, которые я искал. Однако у меня все еще есть проблема, упомянутая выше, и этот открытый вопрос ищет решение.