le modèle n'apparaît pas dans django admin
J'ai créé plusieurs applications et étoffes django pour mon propre fonds et jusqu'à présent, tout fonctionne bien.
Maintenant, je viens de créer un nouveau projet (django 1.2.1) et j'ai eu des problèmes à partir de 1st moments.
J'ai créé un nouveau jeu d'application et un nouveau jeu de modèle. j'ai créé admin.py et y mettre des trucs connexes. Ran syncdb et est allé vérifier dans admin. Le modèle ne s'est pas montré là-haut.
J'ai procédé à vérifier et doublecheck et lu précédent similaire threads: les modèles enregistrés n'apparaissent pas dans admin L'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 quelqu'un d'autre peut le signaler pour moi.
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.
15 réponses
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',
....
Pour:
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'
Le problème signalé peut être parce que vous avez ignoré l'enregistrement des modèles pour le site d'administration. Cela peut être fait, en créant un fichier admin.py
sous votre application, et en enregistrant les modèles avec:
admin.site.register(MyModel)
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 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', # <---- 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, j'ai mis mon application avant L'application admin 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:)
C'est probablement très rare mais j'ai eu un problème aujourd'hui où les autorisations sur le admin.py le fichier que j'avais créé était corrompu et le rendait donc illisible par django. J'ai supprimé le fichier et recréé avec succès.
J'espère que ça sauve quelqu'un, s'ils trébuchent ici avec mon problème.
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)
J'utilise Digital ocean et j'ai également rencontré ce problème. La solution était un redémarrage du service. J'ai utilisé
Service gunicorn redémarrer
Et cela a amené le modèle à apparaître
J'ai le même problème. Je résous ceci pour ajouter le registre d'admin à admin.py
.
Et je n'ai pas besoin d'ajouter de classe supplémentaire.
Comme:
from jalka.game.models import Game
from django.contrib import admin
admin.site.register(Game)
Environnement: Win10、Django 1.8
J'ai eu 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.
A 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 souligner cette chose ici aussi.
J'ai eu du mal à enregistrer mes modèles (j'ai essayé toutes les suggestions ci-dessus) aussi jusqu'à ce que je fasse une chose très simple. J'ai déplacé mon admin.py hors du répertoire jusqu'au répertoire du projet-rafraîchi l'écran d'administration et déplacé vers l'arrière et le tour est joué dans le répertoire des modèles app-ils sont tous apparus instantanément. J'utilise PyCharm donc je ne sais pas si cela causait des problèmes.
MA configuration est 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)
En ajoutant à ce que SAFF a dit, Votre settings.py
devrait être comme 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',
)
Je voudrais aussi 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 en direct sur le port 80 sur amazon web services. J'utilisais également un système D'exploitation Ubuntu.) Qui a résolu pour moi. J'espère que cela peut aider quelqu'un.
Erreur peut être à views.py
dans votre "def" vous devriez vérifier si vous avez obtenu
If mymodel.is_valid():
mymodel = model.save()
Je vais vous donner un piee de mon code pour que vous le compreniez
@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,
})
{[3`} ' UserAsking est un formulaire.
j'espère que je vous ai aidé , Vous n'avez qu'à importer(inclure) ceci:
from models import *
L'une des raisons possibles est que vous ne fermez pas les anciens processus python.