[英]model inheritance + django admin
我正在重用cmsplugin_news中的News模型,只是在继承模型中添加了一些额外的字段。 (多表继承,如此处所述 。
from cmsplugin_news.models import News
class News(News):
departments = models.ManyToManyField('department.Department', blank=True, related_name="news")
在我的admin.py上,我正在扩展NewsAdmin以设置自己的表单:
class MyNewsAdmin(NewsAdmin):
form = NewsModelForm
我在forms.py中定义的:
from news.models import News
class NewsModelForm(NewsForm):
class Meta:
model = News
widgets = {
'excerpt': CKEditorWidget(config_name='basic'),
'content': CKEditorWidget(config_name='default')
}
def _get_widget(self):
from ckeditor.widgets import CKEditorWidget
return CKEditorWidget()
当我从Shell控制台保存对象时,模型继承似乎运行良好。 但是,当我尝试从Django管理员创建MyNews对象并将其链接到部门时,不会保存此字段。 或至少此更改未在任何地方显示
unicms-testnews=> select * from cmsplugin_news_news;
id | title | slug | excerpt | content | is_published | pub_date | created | updated | link
----+-------+------+---------+---------+--------------+------------------------+-------------------------------+-------------------------------+------
1 | dfad | dfad | | | f | 2013-09-10 13:44:46+02 | 2013-09-10 13:45:04.709556+02 | 2013-09-10 13:57:05.568696+02 |
(1 row)
unicms-testnews=> select * from news_news;
news_ptr_id
-------------
1
(1 row)
unicms-testnews=> select * from news_news_departments;
id | news_id | department_id
----+---------+---------------
1 | 1 | 1
(1 row)
我什么都不懂,有人可以帮我吗? 非常感谢你!
您为News
创建了一个表单,该表单也存在于您的数据库中,因为模型不是抽象的,也不是MyNews
。 因此,即使您添加了带有输入的小部件,您当前的表单也没有departments
属性的字段。 做下面的代码:
class MyNewsForm(NewsForm):
class Meta:
model = MyNews # instead of just News
...
Django在后台执行的操作是创建两个关系: cmsplugin_news_news
存储所有News
字段,而news_news_departments
存储新字段,并且与第一个关系一对一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.