我的django应用程序中出现了一个奇怪的问题。在我的应用程序中,我有一个像这样的模型A
class ModelA(models.Model):
name = models.CharField(max_length=30)
和另一个使用模型A外键的模型B
class ModelB(models.Model):
modelA = models.ForeignKey(ModelA)
name = models.CharField(max_length=30)
我有一个视图,我生成一个报告,其中我有ModelA
对象的值,我想要创建所有ModelB
对象的模型A'宾语。我这样做是
obj_list = ModelB.objects.filter(modelA=modelA_object)
我得到的问题是有时(并非总是),我得到与modelA_object
无关的ModelB对象。从表面上看,它与其他一些modelA_object
有关。
例如,我有两个modelA
对象A1 and A2
。还有一些modelB
对象B1 and B2
。这里B1
正在使用A1
外键,而B2
正在使用A2
外键。在正常情况下,当我运行以下代码
obj_list = ModelB.objects.filter(modelA=A1)
obj_list
将包含B1
。但有时(并非总是)我在该列表中得到B2
。似乎报告的两个请求/线程彼此冲突。它不会经常发生,当它发生时,当我第二次生成报告时,它会显示正确的结果。我在DB中没有写任何东西,因为我在生成报告。有谁可以帮我解决这个问题?
原始代码:
任务模型:
class Tasks(models.Model):
name = models.CharField(max_length=500)
description = models.CharField(max_length=5000)
job = models.ForeignKey(JobPosition)
测试传导模型:
class TestConducted(models.Model):
clinic = models.ForeignKey(Entity)
applied = models.ForeignKey(CandidateApplied)
result = models.ForeignKey(TestResults)
date = models.DateTimeField(blank=True)
comments = models.CharField(max_length=5000, blank=True)
dynamic_Lifts = models.CharField(max_length=1000, blank=True)
not_cap_Comments = models.CharField(max_length=5000, blank=True)
hidden = models.BooleanField(default=False)
is_invoiced = models.BooleanField(default=False)
modified = AutoLastModifiedField(('modified'))
CandidateApplied Model:
class CandidateApplied(models.Model):
candidate = models.ForeignKey(Candidate)
format = models.ForeignKey(TestFormat)
jobposition = models.ForeignKey(JobPosition,
blank=True,
null=True)
barcode = models.IntegerField(max_length=6, blank=True, null=True)
特定的TestConducted模型对象只能有一个CandidateApplied模型对象。 这就是我访问任务的方式
var_conducted = "TestConducted Model Object"
temp_tasks = Tasks.objects.filter(job=var_conducted.applied.jobposition.id).values_list \
('name', 'description').order_by('id')
这里jobposition
是另一个类似的模型
class JobPosition(TimeStampedModel):
title = models.CharField(max_length=200)
description = models.CharField(max_length=400, blank=True)
SOC_Code = models.CharField(max_length=400, blank=True)
PDC = models.CharField(max_length=100, choices=Values.CUSTOM_PDC_OPTIONS)
entity = models.ForeignKey(Entity, blank=True, null=True)
is_active = models.BooleanField(default=True)
billed_amount = models.IntegerField(default=0, blank=True)
hidden = models.BooleanField(default=False)
monthly_invoice = models.BooleanField(default=False)