2012-01-27 3 views
0

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

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 файл в корневом каталоге сайта и в/статический/админ/и попытались два стандартных записей для него следующим образом:

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

Почему не просто приложение? Если это ваши профили, взгляните на http://pypi.python.org/pypi/django-profiles – darren

+1

Некоторые рекомендации по теме: в Django вам нужно перегрузить метод '__unicode__', а не метод' __str__' , Я также настоятельно рекомендую вам прочитать полный учебник по Django (https://docs.djangoproject.com/en/1.3/intro/tutorial01/) (часть 2 посвящена ** Django Admin **) – juliomalegria

+0

@mongoose_za спасибо за профиль pkg info. –

ответ

2

Не указывайте свой класс 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 (или аналогичным) для нечетной модели.

+2

Не видели 'класс Admin' годами! –

+0

@Yuji Tomita, да, я действительно пробовал django, когда он впервые вышел, и не помню, как это синтаксис, поэтому он выглядел правильно для меня ... но Alasdair прав, я должен смешивать их в реальных моделях. –

+0

@ ChrisHarty, вы имеете в виду, что вас не должно быть. Не то, чтобы он ничего сделал :) –

Смежные вопросы