Python 在启动时使用空数据库自动创建django模型实例
我的django项目需要在启动时创建一些不存在的模型实例 我目前正在应用程序配置中创建所需的模型实例Python 在启动时使用空数据库自动创建django模型实例,python,django,django-models,Python,Django,Django Models,我的django项目需要在启动时创建一些不存在的模型实例 我目前正在应用程序配置中创建所需的模型实例 class MyAppConfig(AppConfig): name = 'my_app' def ready(self): create_required_objects() def create_required_objects(): from my_app.models import MyObject for name in MyObject.reserved_names:
class MyAppConfig(AppConfig):
name = 'my_app'
def ready(self):
create_required_objects()
def create_required_objects():
from my_app.models import MyObject
for name in MyObject.reserved_names:
if not MyObject.objects.filter(name=name).exists():
MyObject.objects.create(name=name, not_editable=True)
在初始化sqlite数据库时,这一点非常有效,但是如果清除数据库,然后尝试运行服务器,则会出现以下错误:
django.db.utils.OperationalError: no such table: my_app_object
我希望能够清除数据库(最好只删除db.sqlite3)并运行服务器。您可以使用它来填充一些临时数据。您可能需要执行makemigrations和migrate来设置数据库中的所有表,您可以遵循以下步骤
在填充数据方面,您可以尝试以下代码:
from model_bakery import baker
from my_app.models import MyObject
baker.make(MyObject)
安装model_bakery后,在您的创建所需对象功能中添加baker.make(MyObject)
:
pip安装模型\u面包房
您可以使用它来填充一些临时数据。您可能需要执行makemigrations和migrate来设置数据库中的所有表,您可以遵循以下步骤
在填充数据方面,您可以尝试以下代码:
from model_bakery import baker
from my_app.models import MyObject
baker.make(MyObject)
安装model_bakery后,在您的创建所需对象功能中添加baker.make(MyObject)
:
pip install model\u bakery
使用迁移后信号在迁移新数据库时创建一个新实例
比如:-
from django.db.models.signals import post_migrate
from my_app.models import MyObject
def create_required_objects(sender, **kwargs):
for name in MyObject.reserved_names:
if not MyObject.objects.filter(name=name).exists():
MyObject.objects.create(name=name, not_editable=True)
class MyAppConfig(AppConfig):
name = 'my_app'
def ready(self):
post_migrate.connect(create_required_objects ,sender=self)
此代码在迁移数据库后自动生成用户使用迁移后信号在迁移新数据库时创建新实例
比如:-
from django.db.models.signals import post_migrate
from my_app.models import MyObject
def create_required_objects(sender, **kwargs):
for name in MyObject.reserved_names:
if not MyObject.objects.filter(name=name).exists():
MyObject.objects.create(name=name, not_editable=True)
class MyAppConfig(AppConfig):
name = 'my_app'
def ready(self):
post_migrate.connect(create_required_objects ,sender=self)
此代码在迁移数据库后自动生成用户此错误是由于您在清除数据库并再次运行服务器时提到的代码,以及您正在导入数据库中不存在的my_app.models
对象。此错误是由于您在清除数据库并再次运行时提到的代码造成的服务器和您正在导入数据库中不存在的my_app.models
的对象。