Установка начальных экземпляров (по умолчанию) в админке 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),
    ]
Вернуться на верх