有以下四种型号
测量:
class Measurement(models.Model):
config = models.ForeignKey(MeasurementConfig)
energy = models.ForeignKey(Energy)
dose = models.DecimalField(max_digits=20,decimal_places=9, blank=True, null=True)
测量配置
class MeasurementConfig(models.Model):
date = models.DateTimeField(auto_now_add=True)
linac = models.ForeignKey(Linac)
直线加速器
class Linac(models.Model):
name = models.CharField(max_length=10)
genre = models.ForeignKey(Type)
energies = models.ManyToManyField(Energy)
活力
class Energy(models.Model):
value = models.PositiveIntegerField()
category = models.ForeignKey(EnergyCategory)
现在我想从特定直线加速器和能量的测量模型中获取所有剂量测量值。
我使用以下代码来获取这些:
linac = get_object_or_404(Linac, name=linacname)
# Get all the energies for the specified linac
measurementconfigs = MeasurementConfig.objects.filter(linac=linac)
identifications = []
for measurementconfig in measurementconfigs:
identifications.append(measurementconfig.identification)
config = get_object_or_404(MeasurementConfig, identification=identifications[0])
energies = config.linac.energies.all()
# Get the measurements
energymeasurements = []
for energy in energies:
measurements = Measurement.objects.filter(config__linac=linac).filter(config__linac__energies__exact=energy)
energymeasurements.append(measurements)
我期望能量测量看起来像这样:
energymeasurements = [(Measurements_**Energy1**), (Measurements_**Energy2**), (Measurements_**EnergyN**)]
其中N是能量
但我得到的是:
energymeasurements = [(Measurements_**ALLEnergies1**), (Measurements_**ALLEnergies2**), (Measurements_**ALLEnergiesN**)]
其中N是能量的量。
所以我希望我所做的查询可以获得循环指定的特定能量的所有测量值。但相反,我得到了所有能量的测量值。我已经通过仅使用特定能量的 id 尝试不使用循环,同样的问题发生了。
我知道问题出在查询中,但我无法找出问题所在。