Estoy comenzando mi primer proyecto usando Django 1.11. Seguí los mismos pasos que usé en varios proyectos de Django 1.10, pero por alguna razón mis modelos no aparecen en mi sitio localhost/admin.
Mis INSTALLED_APPS de 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', ]Mi 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)Mi [aplicación_principal]/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')) ] Pero cuando voy a localhost:8000/admin las únicas cosas presentes son Grupos y Usuarios como si no hubiera registrado ningún modelo.
Ejecuté makemigrations y migre, e intenté poner admin.py dentro del directorio de la aplicación en lugar del directorio del proyecto. Actualmente se encuentra en el directorio [nombre_del_proyecto]/[nombre_del_proyecto] (el que tiene los archivos settings.py, urls.py y wsgi.py).
¿Alguna sugerencia?
Creo que tienes que registrar tus modelos en el administrador. Normalmente lo hago así si es un modelo simple.
from django.contrib import admin from .models import * # Register your models here. @admin.register(Model) class ModelAdmin(admin.ModelAdmin): passDejé de tratar de diagnosticar mi problema, eliminé el proyecto y comencé de nuevo. Funciona bien ahora. Sinceramente, no estoy seguro de cuál era el problema. Si alguien tiene curiosidad, aquí están mis nuevos archivos:
de ajustes.py:
INSTALLED_APPS = [ 'home', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]de urls.py:
from django.conf.urls import url from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ]de admin.py:
from django.contrib import admin # Register your models here. from .models import HomePageText admin.site.register(HomePageText)Sinceramente, no entiendo por qué no funcionaba antes. Si alguien con más conocimientos puede detectar alguna diferencia que yo no puedo, por favor hágamelo saber.
Cuando uso el administrador de Django, siempre importo de esta forma:
from django.contrib import adminY inherente a la clase:
class HomeAdmin(admin.ModelAdmin):Entonces su archivo admin.py se vería así:
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)