Подтвердить что ты не робот

Модель не отображается в django admin

Я запустил несколько приложений и материалов для django для своего собственного фонда, и пока все работает нормально.

Теперь я только что создал новый проект (django 1.2.1) и столкнулся с проблемами с 1-го момента.

Я создал новое приложение - игру и новую модель игры. Я создал admin.py и помещал в него связанные вещи. Ran syncdb и пошел проверять на администратора. Модель не появилась там.

Я продолжал проверять и дважды проверять и читать предыдущие аналогичные темы: Зарегистрированные модели не отображаются в admin Приложение Django не отображается в интерфейсе администратора

Но, насколько я могу судить, они мне тоже не помогают. Возможно, кто-то другой может указать на это.

models.py в игровом приложении:

# -*- 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 в игровом приложении:

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

project 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)),
)

Алан.

4b9b3361

Ответ 1

Хмммм... Попробуйте изменить свое приложение в settings.py:

From:

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

To:

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'

Ответ 2

Проблема может быть вызвана тем, что вы пропустили регистрацию моделей для сайта администратора. Это можно сделать, создав файл admin.py под вашим приложением и зарегистрировав модели с помощью:

from django.contrib import admin
from .models import MyModel

admin.site.register(MyModel)

Ответ 3

Я знаю, что это уже ответили и приняты, но мне хотелось поделиться тем, что мое решение этой проблемы было, может быть, это поможет кому-то другому.

Мой INSTALLED_APPS выглядел так:

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',
)

См., я помещаю свое приложение перед приложением администратора Django и, видимо, загружает их в этом порядке. Я просто переместил приложение прямо под администратором, и он начал отображаться:)

Ответ 4

Для Django 1.10 мне помог зарегистрировать модель следующим образом с (admin.ModelAdmin) в конце

from django.contrib import admin

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

Ответ 5

Это, вероятно, очень редко, но сегодня у меня была проблема, когда разрешения на файл admin.py, который я создал, были повреждены и, следовательно, сделали его нечитаемым django. Я удалил файл и с успехом воссоздал его.

Надеюсь, что это спасет кого-нибудь, если они наткнутся на мою проблему.

Ответ 6

Была такая же проблема с Django 2.0.

Следующий код не работает:

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

from users import models

admin.register(models.User, UserAdmin)

Получается линия

admin.register(models.User, UserAdmin)

должно было

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

Так как я не получил никаких предупреждений, просто хотел указать на эту вещь и здесь.

Ответ 7

Я боролся с регистрацией своих моделей (попробовал все предложения выше), пока я не сделал очень простую вещь. Я переместил свой admin.py из каталога в каталог проекта - обновил экран администратора и переместил его обратно и вуаля в каталог приложения моделей - все они появились мгновенно. Я использую PyCharm, поэтому не уверен, что это вызывает некоторые проблемы.

Моя установка - именно то, что написано в руководстве 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)

Ответ 8

Я использую цифровой океан и также столкнулся с этой проблемой. Решением был перезапуск службы. Я использовал

перезапуск пулевого пуска

и это привело к появлению модели

Ответ 9

Я также хотел бы добавить, что я сделал все эти ответы, за исключением того, что я не вводил в командной строке sudo service apache2 restart, который мне нужен, чтобы изменения вступили в силу. (Потому что я тестировал на реальном сервере на порту 80 на веб-сервисах amazon. Я также использовал операционную систему Ubuntu.) Это разрешило это для меня. Надеюсь, это может помочь кому-то.

Ответ 10

У меня та же проблема. Я решаю это, чтобы добавить регистр администратора в admin.py. И мне не нужно добавлять дополнительный класс.

Как

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

admin.site.register(Game)

Окружающая среда: Win10, Django 1.8

Ответ 11

У меня возникла та же проблема: после перезапуска моя модель сервера разработки отображается на странице администратора.

Ответ 12

Добавив к тому, что сказал Сафф, ваш settings.py должен выглядеть следующим образом:

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',
)

Ответ 13

Ошибка может быть в views.py в вашем "def", вы должны проверить, получили ли вы

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

Я дам вам кусок моего кода, чтобы вы поняли это

@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 - это форма. я надеюсь я тебе помог

Ответ 14

Вам нужно только импортировать (включить) это:

from models import *

Ответ 15

Одна из возможных причин заключается в том, что вы не закрываете старые процессы Python.

Ответ 16

У меня была похожая проблема на экземпляре django, смонтированном в док-контейнере. Код был верным, но изменения в admin.py не появлялись в админке django.

После выхода из процесса django и перемонтирования контейнера с помощью docker-compose up добавленные модели стали доступны в django admin.