2017-04-18 21 views
0

私はちょうどDjango 1.11を使って私の最初のプロジェクトを始めています。私は複数のDjango 1.10プロジェクトで使用したのと同じ手順をたどりましたが、何らかの理由で私のモデルがlocalhost/adminサイトに表示されません。 settings.pyからモデルはdjangoの管理者には表示されません

マイINSTALLED_APPS:

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'home.apps.HomeConfig', 
] 

マイadmin.py:

from django.contrib import admin 

from home.models import Home 

# begin Admin Class Definitions 
class HomeAdmin(models.ModelAdmin): 

    fieldsets = [ 
     ('Title', {'fields': ['title']}), 
     ('Publication Date', {'fields': ['pub_date']}), 
     ('Home Page Text', {'fields': ['header', 'sub_header', 
     'link_text']}), 
    ] 
    list_display = ('title', 'pub_date') 
    list_filter = ['pub_date'] 

admin.site.register(Home, HomeAdmin) 

マイ[main_app] /urls.py:

from django.conf.urls import url, include 
from django.contrib import admin 

admin.autodiscover() 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('home.urls')) 
] 

しかし、私は行きますlocalhost:8000/adminには、まったくモデルを登録していないかのようにグループとユーザーだけが存在します。

私はmakemigrationsを実行して移行していますが、プロジェクトディレクトリではなくapp.pyディレクトリにadmin.pyを入れてみました。現在、[project_name]/[project_name]ディレクトリ(settings.py、urls.py、およびwsgi.pyファイルを持つディレクトリ)にあります。

提案がありますか?

+0

'admin.autodiscover()'を削除するにはどうすればよいですか? –

+0

変更なし、残念ながら – Jay

+0

「home.apps.HomeConfig」とは何ですか?あなたのアプリが 'home'と呼ばれる場合、インストールされたアプリは' 'home''をリストアップするべきです。また、リストの一番上に置いてください。 – allcaps

答えて

0

私はDjangoの管理者を使用する場合は、必ずこの形式でインポート:

クラスの
from django.contrib import admin 

そしてinherint:

class HomeAdmin(admin.ModelAdmin): 

だからあなたadmin.pyファイルは次のようにlookeます:

from django.contrib import admin 

from home.models import Home 

# begin Admin Class Definitions 
class HomeAdmin(admin.ModelAdmin): 

    fieldsets = [ 
     ('Title', {'fields': ['title']}), 
     ('Publication Date', {'fields': ['pub_date']}), 
     ('Home Page Text', {'fields': ['header', 'sub_header', 
     'link_text']}), 
    ] 
    list_display = ('title', 'pub_date') 
    list_filter = ['pub_date'] 

admin.site.register(Home, HomeAdmin) 
+0

これは私のadmin.pyが元の質問のように見えるものです。 クラスHomeAdmin(models.ModelAdmin): – Jay

+0

はまあ、あなたのクラスであなたが持っている とmodels.ModelAdminはどこから来たのかわからない、 は、使用してみてください:admin.ModelAdmin – jspblm

+1

ああ、私の神あなたは正しいです。そこに問題がありました。 すみません、すみません。 – Jay

1

あなたのモデルを管理者に登録する必要があると思います。私はそれが単純なモデルであれば、通常これを好きです。

from django.contrib import admin 
    from .models import * 

    # Register your models here. 
    @admin.register(Model) 
    class ModelAdmin(admin.ModelAdmin): pass 
+0

私はデコレータと 'admin.site.register(Model、ModelAdmin)'でそれを登録しようとしましたが、どちらの方法でも動作しませんでした。 – Jay

0

私は自分の問題を診断しようとしたことを断念し、プロジェクトを終了してからやり直しました。今はうまくいく。私は正直なところ、問題が何だったのか分かりません。誰でも好奇心旺盛であれば、ここでの私の新しいファイルは次のとおりです。settings.pyから

INSTALLED_APPS = [ 
    'home', 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
] 

urls.pyから:

from django.conf.urls import url 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
] 

admin.pyから:

from django.contrib import admin 

# Register your models here. 
from .models import HomePageText 

admin.site.register(HomePageText) 

正直なところ、なぜそれがうまくいかなかったのか分かりません。より多くの洞察力を持っている人なら、私には分かりません。

関連する問題