Установка начальных экземпляров (по умолчанию) в админке django
Я создаю приложение для блога и пытаюсь добавить inbuilt initial instances in django admin
, чтобы когда пользователь клонирует репо, он видел несколько начальных blogs
каждый раз даже после reset the database
.
Я нигде не нашел, как установить начальные данные. Я также пробовал Как установить начальные данные для Django admin model add instance form? Но это не то, что я пытаюсь сделать.
models.py
class BlogPost(models.Model):
title = models.CharField(max_length=1000)
body = models.CharField(max_length=1000)
Я пытался использовать Providing data with fixtures Но я понятия не имею, как я могу хранить в.
Любая помощь будет очень признательна. Спасибо.
Фикстуры все равно нужно загружать вручную. Вы можете добавить этот шаг в инструкцию по установке, что-то вроде "чтобы загрузить данные примера, установите предоставленное приспособление через manage.py loaddata ./my_blog_fixture.json
Если вы хотите, чтобы данные вставлялись в базу данных без каких-либо действий пользователя, то вам нужна Миграция данных
Это вид миграции базы данных, который никак не изменяет структуру базы данных, но выполняет пользовательскую команду, например, вставляет некоторые данные. Пример (необходимо внести коррективы, чтобы соответствовать названию вашего приложения) ниже. Вы можете либо сгенерировать пустую миграцию (рекомендуется), либо добавить RunCommand в существующую миграцию.
Для создания новой пустой миграции выполните makemigrations
$ manage.py makemigrations your_app_name --empty
затем отредактируйте миграцию и добавьте RunPython
туда (см. документацию по ссылке выше).
from django.db import migrations
def insert_blogpost(apps, schema_editor):
Person = apps.get_model('your_app_name', 'BlogPost')
post = BlogPost(title="hello", body="post content")
class Migration(migrations.Migration):
dependencies = [
('your_app_name', '0001_initial'),
]
operations = [
migrations.RunPython(insert_blogpost),
]