在Django中调用delete()会发出错误消息

2024-05-13 05:12:15 发布

您现在位置:Python中文网/ 问答频道 /正文

假设在Django,我有一个模型:

class Test(models.Model):
    name = models.CharField(max_length = 100)

然后在Django Shell中使用以下代码:

^{pr2}$

到目前为止还不错。现在我知道了:

Test.objects.all().delete()

然后我收到一条很长的错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\db\models\query.py", line 536, in delete
    collector.collect(del_query)
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\db\models\deletion.py", line 193, in collect
    if self.can_fast_delete(objs):
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\db\models\deletion.py", line 155, in can_fast_delete
    for related in get_candidate_relations_to_delete(opts):
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\db\models\deletion.py", line 67, in <genexpr>
    f for f in candidate_model_fields
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\db\models\deletion.py", line 62, in <genexpr>
    opts.get_fields(include_hidden=True) for opts in candidate_models
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\db\models\options.py", line 740, in get_fields
    return self._get_fields(include_parents=include_parents, include_hidden=include_hidden)
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\db\models\options.py", line 802, in _get_fields
    all_fields = self._relation_tree
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\utils\functional.py", line 59, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\db\models\options.py", line 709, in _relation_tree
    return self._populate_directed_relation_graph()
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\db\models\options.py", line 681, in _populate_directed_relation_graph
    all_models = self.apps.get_models(include_auto_created=True)
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\apps\registry.py", line 168, in get_models
    self.check_models_ready()
  File "C:\Users\Alexander\Anaconda3\lib\site-packages\django\apps\registry.py", line 131, in check_models_ready
    raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

我见过其他人收到类似的错误消息,但他们没有使用delete()操作,也没有使用Django shell。如果相关,我将在Microsoft Visual Studio 2015中使用Django 1.8.6。在


Tags: djangoinpyselfdbgetmodelslib
1条回答
网友
1楼 · 发布于 2024-05-13 05:12:15

根据我看到的different所以answers,这将实现以下目的:

import django
django.setup()

背后的原因是

Basically, Django has a new way to load installed app. If you load Django from a Python script (like I was in my custom unit tests), some initialization needs to be done before proceeding and calling setup() is how to do it. Aside from that, kudos to the team, my 1.6.2 to 1.7.1 upgrade seems to an hour's worth of real work.

– JL Peyret

相关问题 更多 >