我試圖在Django定義2種型號,像這樣:Django的一個一對多的模式和管理內聯
class Selector(models.Model):
# A Beautiful Soup selector
selector = models.CharField(max_length=ELEMENT_SELECTOR_MAX_LENGTH, null=True, blank=True)
def __str__(self):
return self.selector
class Provider(models.Model):
# Articles' parent container selector
articles_parent_container_selector = models.ForeignKey(Selector, related_name="articles_parent_container",
help_text=_("Beautiful Soup selector for all articles' "
"parent container"))
# Article's parent container selector
article_parent_container_selector = models.ForeignKey(Selector, related_name="article_parent_container_selector",
help_text=_("Beautiful Soup selector for each article"))
等等等等 的想法是讓每個字段多個選擇的提供者模型。
我試圖在管理應用程序中實現的是,提供者模型的每個字段都有charField內聯。
所以我的admin.py就像
from django.contrib import admin
from .models import Provider, Selector
class SelectorInline(admin.StackedInline):
model = Selector
class ProviderAdmin(admin.ModelAdmin):
inlines = [
SelectorInline,
]
admin.site.register(Provider, ProviderAdmin)
我得到
<class 'news_providers.admin.SelectorInline'>: (admin.E202) 'news_providers.Selector' has no ForeignKey to 'news_providers.Provider'.
我也試過
class SelectorInline(admin.StackedInline):
model = Selector
fk_name = 'articles_parent_container'
錯誤如下所述:Django inline forms with multiple foreign keys
但錯誤現在是:
<class 'news_providers.admin.SelectorInline'>: (admin.E202) 'news_providers.Selector' has no field named 'articles_parent_container'.
還試圖改變我的關係多對多(這似乎更符合我的使用情況也一樣),並應用在這裏找到了破解:http://www.mc706.com/tip_trick_snippets/18/django-manytomany-inline-admin/,但沒有運氣:/
這應該是非常直截了當,但恐怕django開發者沒有注意到這個用例?
謝謝!
外鍵從'提供者'模型到'選擇器'。因此,您可以在「Selector」模型管理員上使用Provider內聯。但是,在'Provider'模型管理員中不能有'Selector'內聯。 – Alasdair
這就是我的想法:/ 我也嘗試http://www.mc706.com/tip_trick_snippets/18/django-manytomany-inline-admin/,但它似乎不工作(我將ForeignKey更改爲ManyToMany) – mitsest