我试图在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