Je suis confronté à un problème de mise en cache dans Django. Jusqu'à présent, j'ai vu ce problème uniquement lors de l'exécution de testsuite. Le problème est que parfois (il semble que cela arrive toujours lors de la deuxième invocation du code), Django ne met pas à jour son cache ou il devient incohérent.Mise en cache dans ManyToManyField de Django
Le code extrait avec un certain débogage est:
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()
Au premier appel, je reçois correctement la sortie suivante:
0 []
1 [<Reference: test>]
Cependant deuxième appel à auto_create
, Django pense qu'il ya une référence, mais il ne me le donne pas:
0 []
1 []
Ce comportement brise bien sûr le code. Une idée de ce qui peut mal se passer ici ou du moins comment le déboguer? PS: Cela ressemble à une commande sur la classe Reference
qui en est la cause. Mais je ne comprends toujours pas pourquoi.
pouvez-vous spécifier les arguments pour 'auto_create()'? – Oleksiy
C'est une instance '' Reference'' (nouvellement créée). –