2

ここで奇妙な状況が発生しました。myapp_entry_tagテーブルの削除 SQL が 2 回実行されるのはなぜですか?

>>> from myapp.models import Tag
>>> from django.db import connection
>>> from pprint import pprint
>>> Tag.objects.only('pk').get(pk=1).delete()
>>> pprint(connection.queries)
[{u'sql': u'SELECT `myapp_tag`.`id` FROM `myapp_tag` ''WHERE `myapp_tag`.`id` = 1 ',
  u'time': u'0.000'},
 {u'sql': u'DELETE FROM `myapp_entry_tag` WHERE `myapp_entry_tag`.`tag_id` IN (1)',
  u'time': u'0.000'},
 {u'sql': u'DELETE FROM `myapp_entry_tag` WHERE `myapp_entry_tag`.`tag_id` IN (1)',
  u'time': u'0.000'},
 {u'sql': u'DELETE FROM `myapp_tag` WHERE `id` IN (1)', u'time': u'0.000'}]

models.py:

class Tag(models.Model):
    ...

class EntryTag(models.Model):
    ...
    tag = models.ForeignKey(Tag)
4

1 に答える 1

0

(回答して申し訳ありませんが、あなたの質問にコメントすることはできません)

django-toolbar を使用して、クエリ実行のコンテキストを取得します。おそらくバグを見つけやすくなります。

于 2013-07-06T18:42:24.150 に答える