Django内のキャッシュの問題に苦労しています。これまでのところ、この問題はtestsuiteを実行しているときにのみ発生しました。問題は、時々(これはコードの2回目の呼び出しで常に発生するようです)、Djangoがキャッシュを更新しないか、一貫性がなくなることです。
いくつかのデバッグで抽出されたコードは次のとおりです。
class Source(models.Model):
name = models.CharField(max_length = 50)
quality = models.IntegerField(default = 0)
class Reference(models.Model):
url = models.URLField()
source = models.ForeignKey(Source)
class Meta:
ordering = ['-source__quality']
class Issue(models.Model):
references = models.ManyToManyField(Reference)
master = models.ForeignKey(Reference, related_name = 'mastered_issue_set')
def auto_create(instance):
issue = Issue.objects.create(master = instance)
print issue.references.count(), issue.references.all()
issue.references.add(instance)
print issue.references.count(), issue.references.all()
最初の呼び出しで、次の出力が正しく表示されます。
0 []
1 [<Reference: test>]
ただし、への2回目の呼び出しでauto_create
、Djangoは参照が1つあると考えていますが、それは私にはわかりません。
0 []
1 []
もちろん、この動作はそれ以上のコードを壊します。ここで何がうまくいかないのか、少なくともそれをデバッグする方法はありますか?
PS:クラスでの注文Reference
がこれを引き起こしているようです。しかし、その理由はまだはっきりしていません。