web-dev-qa-db-fra.com

modèle n'apparaissant pas dans l'administrateur Django

J'ai créé plusieurs applications et produits Django pour mon propre fonds 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 le premier moment.

J'ai créé une nouvelle application - jeu et un nouveau modèle de jeu. J'ai créé admin.py et y ai mis des trucs connexes. A couru syncdb et est allé vérifier dans admin. Le modèle n'est pas apparu là-bas.

J'ai procédé à la vérification, à la vérification des doublons et à la lecture de discussions similaires précédentes: Les modèles enregistrés n'apparaissent pas dans adminL'application Django n'apparaît pas dans l'interface d'administration

Mais pour autant que je sache, ils ne m'aident pas non plus. Peut-être que quelqu'un d'autre peut me le signaler.

models.py dans l'application de jeu:

# -*- 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 de jeu:

# -*- 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)

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 *

# Uncomment the next two lines to enable the admin:
from Django.contrib import admin
admin.autodiscover()

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

Alan.

44
Odif Yltsaeb

Hmmmm ... Essayez de modifier 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',
    'YOUR_PROJECT.game',# OR 'YOUR_PROJECT.Game'
19
Saff

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

admin.site.register(MyModel)
52
jesicadev18

Je sais que cela a déjà été répondu et accepté, mais j'avais envie de partager ma solution à ce problème, peut-être que cela aiderait 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',  # <---- this is my custom app
    # Uncomment the next line to enable the admin:
    'Django.contrib.admin',
    'south',
    # Uncomment the next line to enable admin documentation:
    # 'Django.contrib.admindocs',
)

Vous voyez, je mets mon application avant celle de Django, et apparemment, elle les charge dans cet ordre. J'ai simplement déplacé mon application juste en dessous de l'administrateur, et elle a commencé à apparaître :)

6
Eduard Luca

Pour Django 1.10 m'a aidé à enregistrer le modèle suivant avec (admin.ModelAdmin) à la fin}

from Django.contrib import admin

from .models import YourModel
admin.register(YourModel)(admin.ModelAdmin)
4
pymen

J'ai eu du mal à enregistrer mes modèles (j'ai essayé toutes les suggestions ci-dessus) jusqu'à ce que je fasse une chose très simple. J'ai déplacé mon fichier admin.py du répertoire vers le répertoire du projet - j'ai actualisé l'écran d'administration et l'a déplacé vers le répertoire d'application des modèles - ils sont tous apparus instantanément. J'utilise PyCharm donc je ne sais pas si cela posait problème.

Ma configuration correspond exactement à ce que dit le manuel Django - 

models.py

class xxx(models.Model):
    ....
    def __str__(self):  # __str__ for Python 3, __unicode__ for Python 2
        return self.name

admin.py

from .models import xxx
admin.site.register(xxx)
3
Rob Mascaro

C'est probablement très rare, mais j'ai eu un problème aujourd'hui où les permissions sur le fichier admin.py que j'avais créé étaient corrompues et donc rendues illisibles par Django. J'ai supprimé le fichier et l'ai recréé avec succès.

Espérons que cela sauve quelqu'un, devrait-il trébucher ici avec mon problème.

3
bitwit

Avait 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 du être

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

Puisque je n’ai reçu aucun avertissement, je voulais juste signaler cette chose ici aussi.

1
Pavel Vergeev

J'ai le même problème. Je résous ce problème en ajoutant le registre admin au admin.py.

Comme:

from jalka.game.models import Game
from Django.contrib import admin

admin.site.register(Game)

Environnement: Win10 、 Django 1.8

Django

1
sos418

J'utilise Digital Ocean et j'ai également rencontré ce problème. La solution était un redémarrage du service. j'ai utilisé 

service redémarrage gunicorn

et qui a le modèle pour apparaître

1
Michael Fox

J'ai le même problème, Après le redémarrage, mon modèle de serveur de développement s'affiche dans la page d'administration.

1
Muthuraj S

L'erreur peut être à views.pydans votre "def", vous devriez vérifier si vous avez

If mymodel.is_valid():
mymodel = model.save()

Je vais vous donner un extrait de mon code pour que vous puissiez le comprendre

@login_required(login_url='/home/')
def ask_question(request):
user_asking = UserAsking()

if request.method == "POST":
    user_asking = UserAsking(request.POST)

    if user_asking.is_valid():
        user_asking.save()

    return redirect(home)

return render(request, 'app/ask_question.html', {
    'user_asking': user_asking,
})

`UserAsking est un formulaire . J'espère vous avoir aidé

0
danil2000

J'aimerais également ajouter que j'ai fait tout ce que ces réponses ont dit, sauf que je n'ai pas entré sur la ligne de commande Sudo service Apache2 restart dont j'avais besoin pour que les modifications prennent effet. (Parce que je testais sur un serveur actif sur le port 80 sur les services Web Amazon. J'utilisais également un système d'exploitation Ubuntu.) Cela l'a résolu pour moi. J'espère que cela pourra aider quelqu'un.

0
Rock Lee

Vous devez seulement importer (inclure) ceci:

from models import *
0
user10149671

En ajoutant à ce que dit Saff, votre settings.py devrait ressembler à ceci:

INSTALLED_APPS = (
    'Django.contrib.auth',
    'Django.contrib.contenttypes',
    'Django.contrib.sessions',
    'Django.contrib.sites',
    'Django.contrib.messages',
    'Django.contrib.admin',
    'YOUR_PROJECT',
    # And
    'YOUR_PROJECT.Foo',
    'YOUR_PROJECT.Bar',
)
0
phreeLynx

Une des raisons possibles est que vous ne fermez pas les anciens processus python.