我在Django中遇到了一些緩存問題。到目前爲止,我只在運行測試套件時纔看到這個問題。問題在於,有時候(這似乎總是在第二次調用代碼時發生),Django不更新它的緩存,或者它變得不一致。在Django的ManyToManyField中緩存
與一些調試抽出代碼是:
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>]
然而,在第二次調用到auto_create
,Django的認爲有一個參考,但它並沒有給我:
0 []
1 []
這種行爲當然會破壞更多的代碼。任何想法在這裏可能會出錯或至少如何調試它?
PS:它看起來像訂購Reference
類是造成這種情況。但是我仍然不清楚爲什麼。
你能指定'auto_create()'的參數嗎? – Oleksiy
這是一個''Reference''實例(新創建)。 –