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.
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'
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)
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 :)
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'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)
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.
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.
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
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
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.
L'erreur peut être à views.py
dans 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é
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.
Vous devez seulement importer (inclure) ceci:
from models import *
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',
)
Une des raisons possibles est que vous ne fermez pas les anciens processus python.