Как добавить модель (не приложение) в Django? - PullRequest
0 голосов
/ 28 января 2012

Я использую django 1.3 и просто пытаюсь добавить простую модель (не приложение) на сайт администратора.поэтому я попытался:

from django.db import models

class UserProfile(models.Model):
    notes = models.TextField(db_name="Notes", max_length=15)

    def _str_(self):
        return self.notes

    class Admin:
        pass

, а также попытался создать файл admin.py в корне сайта и в каталоге / static / admin / и попытался сделать для него две стандартные записи следующим образом:

from django.contrib import admin
from mock.models import UserProfile                                       

admin.site.register(UserProfile)

и

from django.contrib import admin
from mock.models import UserProfile

class UserProfileAdmin(admin.ModelAdmin):                                               
    pass                                                                                

admin.site.register(UserProfile, UserProfileAdmin)

любая помощь будет принята с благодарностью.Большое спасибо.

1 Ответ

2 голосов
/ 28 января 2012

Не определяйте свой класс Admin в самой модели, как показано ниже. Это действительно старый способ сделать это, до Django 1.0. Я не уверен, какое учебное пособие или документацию вы используете, но оно очень устарело.

class UserProfile(models.Model):
    notes = models.TextField(db_name="Notes", max_length=15)
    # don't do this!
    class Admin:
        pass

Определение UserProfileAdmin - правильный подход. Файл admin.py не должен идти в /static/admin/. Статический каталог предназначен для статических файлов, таких как таблицы стилей CSS и файлы JavaScript, но не для кода Django.

Что касается вашего вопроса о том, можете ли вы определить модель без определения приложения, это не очень хорошая идея. Многие части django предполагают, что каждая модель принадлежит приложению. Например, имя таблицы базы данных: appname_modelname.

Создание приложения не займет много времени. Запустите команду startapp, и она создаст базовый каталог и файлы.

./manage.py startapp <appname>

Все, что вам нужно сделать, это добавить новое приложение в INSTALLED_APPS и создать файл admin.py.

По мере того, как ваш проект становится больше, хранение моделей в приложениях сделает его более организованным. Многие пользователи Django создают приложение с именем utils (или аналогичное) для нечетной модели.

...