2017-12-19 8 views
0

DjangoプロジェクトをDjango 2.0に書いています。URLパターンがモデル名と同じ場合、Django管理者がビューテンプレートを読み込みます

別の奇妙な動作がDjangourlpatternsに気付きました。

Starred(models.Model)

同じ私はモデル名

urlpatterns = [ 
    url(r'^starred/$', StarredNotes.as_view(), name='starred'), 
    url(r'^shared/$', SharedNotes.as_view(), name='shared'), 
] 
同じ経路パターンを有するため urlpatternを設定した Shared(models.Model) sharednotes内アプリ

と同様に、私はその中にアプリstarrednotesとモデルを有します

と表示StarredNotes

です。

URLの設定は、上記

http://example.com/notes/shared 
http://example.com/notes/starred 

を使用してアクセス可能である。しかし、私は

http://example.com/admin/sharednotes/shared 
http://example.com/admin/starrednotes/starred 

としてURLをadminからこれら二つのモデルにアクセスしていたときに、これら2つのリンクがStarredNotesでテンプレートの設定をロードしていますadminテンプレートの代わりにSharedNotesクラスを使用します。

+0

Djangoを再インストールしましたか?時にはこのような奇妙な問題を解決することができます。 – mazulo

+0

私は再インストールを試みました。失敗。 –

+0

印刷画面を追加できますか? –

答えて

0

なぜこのように動作しているのか理解できません。それはDjangoの制限またはDjangoのバグですか?

とにかくここには2つの方法があります。

1.変更urlpattern

変更のURLパターンとモデル名以外の何かでパターンを交換してください。 私の場合、これは私のurlpatternsが今見える方法です。

urlpatterns = [ 
    url(r'^starred/$', StarredNotes.as_view(), name='starred'), 
    url(r'^shared/$', SharedNotes.as_view(), name='shared'), 
] 

2.変更モデル名

これは推奨方法ではありませんが、あなたはURLPATTERNがモデルよりも重要である場合にのみ、他のものにあなたのモデルの名前を変更することができます。 モデル名を変更すると、他の多くの場所も変更する必要があります。

class SharedNote(models.Model): 
    # model fields 

class StarredNote(models.Model): 
    # model fields 
関連する問題