好的,問這個問題除了我的個人資料上很酷的風滾草徽章外,沒有任何東西。我最終發現了以下解決方案。這比我預期的要簡單,但它讓我問另一個問題here,因爲一旦實施,從管理頁面的ModelChoiceField中選擇並保存不會按預期創建外鍵關係。
無論如何,在該解決方案:
我的藝術模型包含布爾場「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',)
接下來,我添加了這個表單內聯形式的藝術模式...
class ArtInline(admin.TabularInline):
model = Art
form = RuntimeArtSelectForm
...並列入爲的ModelAdmin的Storypak ArtInline。這給了我下拉菜單,其中包含我正在尋找的過濾的模型對象列表。不過,我仍然有上面提到的問題,並打開question尋找解決方案。