在 django admin 中设置初始(默认)实例

Set initial (default) instances in django admin

我正在构建一个博客应用程序,我正在尝试添加 inbuilt initial instances in django admin,因此当用户克隆存储库时,即使在 reset the database 之后,用户每次都会看到几个初始 blogs

我没有找到设置初始数据的地方。我也试过 How to set initial data for 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

安装提供的固定装置

如果你想在没有任何用户操作的情况下将数据插入数据库,那么你正在寻找 Data Migration

这是一种数据库迁移,不会以任何方式改变数据库结构,但会执行自定义命令,例如。插入一些数据。下面是一个示例(需要进行调整以匹配您的应用程序名称)。您可以生成空迁移(推荐)或将 RunCommand 附加到现有迁移中。

生成新的空迁移运行makemigrations

$ manage.py makemigrations your_app_name --empty

然后编辑迁移并在其中添加 RunPython(参见上面的链接文档)。

from django.db import migrations

def insert_blogpost(apps, schema_editor):
    BlogPost = apps.get_model('your_app_name', 'BlogPost')
    post = BlogPost(title="hello", body="post content")
    post.save()


class Migration(migrations.Migration):

    dependencies = [
        ('your_app_name', '0001_initial'),
    ]

    operations = [
        migrations.RunPython(insert_blogpost),
    ]