2013-06-13 4 views
0

Как работает django syncdb?шаги, за которыми следует django syncdb

В моем проекте я поместил admins.py в корневую папку проекта.

Вот структура

src 
| 
----proj1 
| | 
| -------- settings.py 
| -------- urls.py 
| 
----forum 
     | 
     -------- admins.py 
     -------- models.py 
     -------- views.py 

папки Здесь форум является Джанго приложения. и proj1 - корень.

Когда я пытаюсь выполнить syncdb, он дает следующий вывод.

Installed 0 object(s) from 0 fixture(s) 

Может кто-нибудь сказать мне, как это работает SyncDB (какова последовательность шагов, он выполняет), чтобы создать базу данных? Здесь он не создает таблицы в соответствии с forum-> models.py. Должен ли я упоминать где-нибудь еще, кроме INSTALLED_APPS и admin.site.register()?

+0

Есть ли что-нибудь, что [исходный код] (https://github.com/django/django/blob/master/django/core/управление/команды/синхронизации db.py) не может вам сказать? –

+0

Я не прошел исходный код. Получив здесь -1, я понял, что должен был пройти через исходный код. – Bhai

+0

'admins.py' должно быть' admin.py'; и 'syncdb' не изменяет существующие таблицы, он только создает новые. –

ответ

2

Syncdb В основном создает таблицы базы данных для всех приложений и загружает любые «светильники» (исходные данные), которые могут потребоваться для загрузки для приложения.

Например, у вас может быть «Категории» определенного объекта - обязательное поле, которое пользователь не может изменить. Вы можете загрузить их как светильники.

В сообщении Installed 0 object(s) from 0 fixture(s) указано, что для этой конкретной модели не было никаких приспособлений.

Вы можете прочитать больше о fixtures here

Когда вы смотрите на source for syncdb, вы можете увидеть, что таблицы созданы, а затем load_initial_data называется.

+0

Я хотел знать последовательность, которую следует для создания ddls. Потому что в этом случае он не создает таблицы для forum-> models.py. – Bhai

+0

- форум в 'INSTALLED_APPS'? – karthikr

+0

Да, в установленных приложениях. А также в admin.py, я закодировал admin.site.register (Post) – Bhai

0

Еще раз отредактируйте файл proj1/settings.py и измените параметр INSTALLED_APPS, чтобы включить строку «forum». Так это будет выглядеть следующим образом:

INSTALLED_APPS = (
    'django.contrib.admin', 
    ...... 
    'forum', 
) 

и в models.py модели записи класса Пример: -

from django.db import models 
class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 

после написания модели, то и запустить команду SyncDB

Примечание: - Вы написали admins.py, но имя файла должно быть admin.py, поэтому повторите проверку.

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