我将尝试在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"))
等等等等。
为了 Provider 模型的每个字段拥有多个选择器,我的想法是使用多个选择器。
我在管理员应用程序中尝试实现的目标是,为 Provider 模型的每个字段都拥有 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多外键嵌套表单
但是现在出现了以下错误:
<class 'news_providers.admin.SelectorInline'>: (admin.E202) 'news_providers.Selector' has no field named 'articles_parent_container'.
我尝试将我的关系更改为ManyToMany(这似乎更符合我的用例),并应用此处找到的hack:http://www.mc706.com/tip_trick_snippets/18/django-manytomany-inline-admin/,但没有成功:/。
这应该很简单,但我担心django开发人员没有注意到这个用例?
谢谢!