108 votes

Modèle qui ne s'affiche pas dans l'administration de django

J'ai créé plusieurs applications django et des trucs pour mon propre plaisir et jusqu'à présent tout a bien fonctionné.

Maintenant, je viens de créer un nouveau projet (django 1.2.1) et j'ai eu des problèmes dès les premiers instants.

J'ai créé une nouvelle application - game et un nouveau modèle Game. J'ai créé admin.py et mis les éléments associés dedans. J'ai exécuté syncdb et suis allé vérifier dans l'admin. Le modèle n'apparaissait pas là-bas.

J'ai continué à vérifier et revérifier et à lire à travers des fils similaires précédents : Les modèles enregistrés n'apparaissent pas dans l'admin L'application Django n'apparaît pas dans l'interface admin

Mais autant que je puisse dire, ils ne m'aident pas non plus. Peut-être que quelqu'un d'autre pourra me signaler cela.

models.py dans l'application game:

# -*- coding: utf-8 -*-
from django.db import models

class Game(models.Model):
      type = models.IntegerField(blank=False, null=False, default=1)
      teamone = models.CharField(max_length=100, blank=False, null=False)
      teamtwo = models.CharField(max_length=100, blank=False, null=False)
      gametime = models.DateTimeField(blank=False, null=False)

admin.py dans l'application game:

# -*- coding: utf-8 -*-
from jalka.game.models import Game
from django.contrib import admin

class GameAdmin(admin.ModelAdmin):
      list_display    = ['type', 'teamone', 'teamtwo', 'gametime']

admin.site.register(Game, GameAdmin)

paramètres du projet settings.py:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

ROOT_URLCONF = 'jalka.urls'

TEMPLATE_DIRS = (
      "/home/projects/jalka/templates/"
)

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'game',
)

urls.py:

from django.conf.urls.defaults import *

# Décommentez les deux lignes suivantes pour activer l'admin :
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
      # Exemple :
      # (r'^jalka/', include('jalka.foo.urls')),
      (r'^admin/', include(admin.site.urls)),
)

216voto

lorenag83 Points 52

Le problème signalé peut être dû au fait que vous avez omis d'enregistrer les modèles pour le site d'administration. Cela peut être fait en créant un fichier admin.py dans votre application, et en y enregistrant les modèles avec :

from django.contrib import admin
from .models import MyModel

admin.site.register(MyModel)

43voto

Saff Points 482

Hmmmm... Essayez de changer l'inclusion de votre application dans settings.py :

De :

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'game',
    ....

À :

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.admin',
    'VOTRE_PROJET.game',# OU 'VOTRE_PROJET.Game'

38voto

Pavel Vergeev Points 1020

J'ai eu le même problème avec Django 2.0.

Le code suivant n'a pas fonctionné:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin

from users import models

admin.register(models.User, UserAdmin)

Il s'avère que la ligne

admin.register(models.User, UserAdmin)

aurait dû être

admin.site.register(models.User, UserAdmin)

Comme je n'ai reçu aucun avertissement, je voulais juste signaler cela également.

10voto

Eduard Luca Points 1968

Je sais que cela a déjà été répondu et accepté, mais j'ai eu envie de partager ma solution à ce problème, peut-être que cela aidera quelqu'un d'autre.

Mon INSTALLED_APPS ressemblait à ceci :

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'core',  # <---- c'est mon application personnalisée
    # Décommentez la ligne suivante pour activer l'administration :
    'django.contrib.admin',
    'south',
    # Décommentez la ligne suivante pour activer la documentation d'administration :
    # 'django.contrib.admindocs',
)

Voyez, j'ai placé mon application avant l'application d'administration de Django, et apparemment elles se chargent dans cet ordre. J'ai simplement déplacé mon application juste en dessous de l'administration, et elle a commencé à s'afficher :)

9voto

Keval Points 30

J'ai eu le même problème. J'ai tout fait correctement. Mais je n'avais pas la permission de voir le modèle.

Donnez simplement les permissions requises (voir/ajouter/éditer/etc) et vérifiez à nouveau.

Donnez la permission en utilisant le panneau d'administration :

  1. Connectez-vous au site en utilisant les identifiants de votre compte superutilisateur.
  2. Le niveau supérieur du site d'administration affiche tous vos modèles, triés par "Application Django". Dans la section Authentification et Autorisation, vous pouvez cliquer sur les liens Utilisateurs ou Groupes pour voir leurs enregistrements existants.
  3. Sélectionnez et ajoutez la permission requise

Sélectionnez et ajoutez la permission requise entrez la description de l'image ici

consultez ce lien pour ajouter/changer des permissions via le panneau d'administration

Alternative : Utiliser du code consultez la documentation officielle de Django

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X