2017-04-18 12 views
0

Ich fange gerade mein erstes Projekt mit Django 1.11. Ich habe dieselben Schritte wie bei mehreren Django 1.10-Projekten verfolgt, aber aus irgendeinem Grund werden meine Modelle nicht auf meiner localhost/admin-Seite angezeigt.Modelle nicht auf Django Admin

Mein INSTALLED_APPS von settings.py:

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

Mein 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) 

My [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')) 
] 

Aber wenn ich gehe zu localhost:8000/admin die einzigen Dinge, die vorhanden sind, sind Gruppen und Benutzer, als ob ich überhaupt keine Modelle registriert hätte.

Ich habe Makemigrationen ausgeführt und migriert, und ich habe versucht, admin.py innerhalb des Anwendungsverzeichnisses anstelle des Projektverzeichnisses zu setzen. Es befindet sich derzeit im Verzeichnis [Projektname]/[Projektname] (das mit den Dateien settings.py, urls.py und wsgi.py).

Irgendwelche Vorschläge?

+0

Wie wäre es mit dem Entfernen der 'admin.autodiscover()' ?? –

+0

keine Änderung, leider – Jay

+0

Was ist 'home.apps.HomeConfig'? Wenn Ihre App "Zuhause" heißt, sollten installierte Apps "Zuhause" auflisten. Stellen Sie es auch auf die Liste, nicht auf den Boden. – allcaps

Antwort

0

Wenn ich die Django Admin importieren immer in dieser Form:

from django.contrib import admin 

Und inherint in der Klasse:

class HomeAdmin(admin.ModelAdmin): 

So Ihre admin.py Datei wie folgt looke würde:

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

genau so sah meine admin.py in der ursprünglichen Frage aus. – Jay

+0

gut in der Klasse, die Sie haben: Klasse HomeAdmin (models.ModelAdmin): und weiß nicht, wo models.ModelAdmin herkam, versuchen Sie es mit: admin.ModelAdmin – jspblm

+1

Oh mein Gott, du hast Recht. Genau da war das Problem. Sorry für Snarky. – Jay

1

Ich denke, Sie müssen Ihre Modelle beim Admin registrieren. Normalerweise mache ich das so, wenn es ein einfaches Modell ist.

from django.contrib import admin 
    from .models import * 

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

Ich habe versucht, es mit dem Dekorator und mit 'admin.site.register (Model, ModelAdmin) zu registrieren' und keine der beiden Möglichkeiten. – Jay

0

Ich habe aufgegeben, mein Problem zu diagnostizieren, und das Projekt und begann von vorne. Es funktioniert jetzt gut. Ich bin ehrlich gesagt nicht sicher, was das Problem war. Wenn jemand neugierig ist, hier sind meine neue Dateien:

von settings.py:

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

von urls.py:

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

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

von admin.py:

from django.contrib import admin 

# Register your models here. 
from .models import HomePageText 

admin.site.register(HomePageText) 

Ich verstehe ehrlich nicht, warum es vorher nicht funktioniert hat. Wenn jemand mit mehr Einsicht einen Unterschied entdecken kann, den ich nicht kann, lassen Sie es mich wissen.

Verwandte Themen