django db编程错误
当我尝试重置数据库时(我创建了一个新的空数据库) 当我运行这个命令django db编程错误,django,django-models,Django,Django Models,当我尝试重置数据库时(我创建了一个新的空数据库) 当我运行这个命令python manage.pymakemigrations(或migrate)时,我遇到了这个错误 我删除了所有应用程序中的所有迁移文件(没有\uuu init\uuu)以及.pyc文件 对这个问题有什么想法吗 (编辑i添加了回溯)在类的声明或定义过程中,类的所有非方法属性都会得到评估/执行。因此,当解释器到达类SampleViewSet时,它会尝试执行行general=general.objects.get(is_active
python manage.py
makemigrations(或migrate)时,我遇到了这个错误
我删除了所有应用程序中的所有迁移文件(没有\uuu init\uuu
)以及.pyc文件
对这个问题有什么想法吗
(编辑i添加了回溯)在类的声明或定义过程中,类的所有非方法属性都会得到评估/执行。因此,当解释器到达类
SampleViewSet
时,它会尝试执行行general=general.objects.get(is_active=True)
,但当然您的数据库还不存在,因为调用.get
意味着一个数据库查询,您会得到一个错误
通常,任何可能导致数据库查询的语句都应该由app configsready
方法、某些中间件/上下文处理器或请求中的视图运行。查看代码,它看起来不像您在任何地方使用general
,因此您可以简单地将其删除:
class SampleViewSet(viewsets.ModelViewSet):
queryset = model.objects.filter(field=site_general.field)
您可能会说,
model.objects.filter(…)
也会导致查询,但是.filter
返回一个QuerySet
,而QuerySet是惰性的,因此仅在需要时才进行计算,因此,这不会导致任何错误。在类的声明或定义过程中,会计算/执行类的所有非方法属性。因此,当解释器到达类SampleViewSet
时,它会尝试执行行general=general.objects.get(is_active=True)
,但当然您的数据库还不存在,因为调用.get
意味着一个数据库查询,您会得到一个错误
通常,任何可能导致数据库查询的语句都应该由app configsready
方法、某些中间件/上下文处理器或请求中的视图运行。查看代码,它看起来不像您在任何地方使用general
,因此您可以简单地将其删除:
class SampleViewSet(viewsets.ModelViewSet):
queryset = model.objects.filter(field=site_general.field)
您可能会说,
model.objects.filter(…)
也会导致查询,但是.filter
返回一个QuerySet
,而QuerySet是惰性的,因此只在需要时进行计算,所以不会导致任何错误。@AbdulAzizBarkat iedited@AbdulAzizBarkatclass SampleViewSet(ViewSet.ModelViewSet):general=general.objects.get(is_active=True)queryset=model.objects.filter(field=site\u general.field)
@AbdulAzizBarkat i addedWhat是model.objects.filter(field=site\u general.field)中的site\u general
?@AbdulAzizBarkat我认为views.py不会引起问题,因为我多次更改了数据库,但现在出现了问题,我没有更改views.py和该视图。@AbdulAzizBarkat Iedited@AbdulAzizBarkatclass SampleViewSet(ViewSet.ModelViewSet):general=general.objects.get(是否处于活动状态=True)queryset=model.objects.filter(field=site\u general.field)
@AbdulAzizBarkat i添加了model.objects.filter(field=site\u general.field)中的site\u general
?@AbdulAzizBarkat我不认为views.py会引起问题,因为我多次更改了数据库,但现在出现了问题,我没有更改views.py和该视图。我在评论行获得了它,它工作了,但这是一次奇怪的体验。谢谢你的帮助,我在评论线上找到了它,它很有效,但这是一次奇怪的经历。谢谢你的帮助
class SampleViewSet(viewsets.ModelViewSet):
queryset = model.objects.filter(field=site_general.field)