0

cmsplugin_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()

シェル コンソールからオブジェクトを保存すると、モデルの継承がうまく機能するようです。しかし、django admin から 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)

何も理解できません、誰か助けてくれませんか?どうもありがとうございました!

4

1 に答える 1

1

用のフォームを作成しましたが、これNewsは 用ではなくモデルが抽象的ではないため、DB にも存在しますMyNews。したがってdepartments、入力を含むウィジェットを追加しても、現在のフォームには属性のフィールドがありません。代わりに次のコードを実行します。

class MyNewsForm(NewsForm):
    class Meta:
        model = MyNews # instead of just News
        ...

Django がバックグラウンドで行うことは、2 つのリレーションを作成することです。 はcmsplugin_news_newsすべてのNewsフィールドをnews_news_departments保存し、 は新しいフィールドを保存し、最初のリレーションと 1 対 1 の関係にあります。

于 2013-09-10T13:54:38.873 に答える