В django, как я могу включить некоторые записи по умолчанию в мой models.py? - PullRequest
2 голосов
/ 02 мая 2010

Если у меня есть models.py, как

class WidgetType(models.Model):
     name = models.CharField(max_length=200)

class Widget(models.Model):
     typeid = models.ForeignKey(WidgetType)
     data = models.CharField(max_length=200)

Как я могу встроить набор встроенных постоянных значений для WidgetType, когда я знаю, что у меня будет только несколько типов виджетов? Ясно, что я могу запустить свой интерфейс администратора и добавить их вручную, но я бы хотел упростить настройку, встроив его в python.

Ответы [ 2 ]

3 голосов
/ 02 мая 2010

Вы можете использовать светильники:

http://docs.djangoproject.com/en/dev/howto/initial-data/#providing-initial-data-with-fixtures

Строго говоря, приборы не являются частью моделей или кода Python в этом отношении. Если вам действительно нужно это в вашем коде Python, вы можете прослушать сигнал post_syncdb и вставить свои данные через ORM, например ::

from django.db.models.signals import post_syncdb

def insert_initial_data(sender, app, created_models, verbosity, **kwargs):
    if WidgetType in created_models:
        for name in ('widgettype1', 'widgettype2', 'widgettype3'):
            WidgetType.objects.get_or_create(name=name)

post_syncdb.connect(insert_initial_data)
0 голосов
/ 19 апреля 2018

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

См. эту статью в Django документах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...