我在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''实例(新创建)。 –