【问题标题】:Set initial (default) instances in django admin在 django admin 中设置初始(默认)实例
【发布时间】:2021-11-22 01:26:51
【问题描述】:

我正在构建一个博客应用程序,我正在尝试添加 inbuilt initial instances in django admin,因此当用户克隆 repo 时,即使在 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,但我不知道如何存储。

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    灯具仍然需要手动加载。您可以将该步骤添加到安装说明中,例如“加载示例数据,通过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),
        ]
    

    【讨论】:

    • 它会向model 添加多个实例吗?如果是,那么我将如何同时添加多个实例?
    • 与在普通代码中执行此操作的方式相同 - 您将一个接一个地创建多个实例。
    猜你喜欢
    • 2016-03-14
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2014-08-25
    • 2013-02-28
    • 2012-01-31
    相关资源
    最近更新 更多