我在使用Django框架设计数据库时遇到了一个问题,我似乎无法解决这个问题。说我有以下型号:
class Report(models.Models):
equipment = models.ForeignKey(Equipament)
category = models.ForeignKey(Category)
date = models.DateField()
user = models.CharField(max_length=100)
class TestA(models.Model):
report = models.ForeignKey(Report)
lasers = models.FloatField()
table = models.FloatField()
dose = models.FloatField()
pass_fail = models.NullBooleanField()
class TestB(models.Model):
report = models.ForeignKey(Report)
ctdi = models.FloatField()
pass_fail = models.NullBooleanField()
class TestC(models.Model):
report = models.ForeignKey(Report)
pass_fail = models.NullBooleanField()
我的问题是:是否可以从测试B,C和D中获取与报告共享相同对象的所有对象?我不希望单独查询每个模型(TestB,TestC或TestD),因为实际上我有更多的测试模型。
任何帮助都是非常有用的。
答案 0 :(得分:1)
为什么你有三种基本相同的不同型号?试试这个:
class Report(models.Models):
equipment = models.ForeignKey(Equipment)
category = models.ForeignKey(Category)
date = models.DateField()
user = models.CharField(max_length=100)
class Result(model.Model):
report = models.ForeignKey(Report)
status = models.BooleanField(default=False)
lasers = models.FloatField(blank=True, null=True)
table = models.FloatField(blank=True, null=True)
ctdi = models.FloatField(blank=True, null=True)
dose = models.FloatField(blank=True, null=True)
title = models.CharField(max_length=200)
只需为每个报告添加一个标题,例如'TestA'
/ 'TestB'
,而不是创建一个全新的模型。
获取报告的所有结果:
r = Result.objects.filter(report=Report.objects.get(pk=1))