【发布时间】:2012-11-25 15:40:28
【问题描述】:
我在 Django 中遇到了一些缓存问题。到目前为止,我仅在运行 testsuite 时才看到此问题。问题是有时(这似乎总是在第二次调用代码时发生),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>]
但是在第二次调用auto_create 时,Django 认为只有一个引用,但它没有给我:
0 []
1 []
这种行为当然会破坏更多代码。知道这里可能出了什么问题,或者至少如何调试它?
PS:看起来在Reference 类上订购会导致这种情况。但我仍然不清楚为什么。
【问题讨论】:
-
你能指定
auto_create()的参数吗? -
这是一个
Reference实例(新创建的)。
标签: python django many-to-many manytomanyfield django-orm