0

我正在面对一个设计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共享从报告相同oject所有对象?我不希望单独查询每个模型(TestB,TestC或TestD),因为实际上我有更多的Test模型。
任何帮助是非常apreciated。

+0

你是说你有一个MODELA对象,你想要得到的相关ModelB,C和D?这似乎可能与您的问题有关http://stackoverflow.com/a/2315053/4974980 –

+0

@JensAstrup谢谢。那正是我想要做的。我会看看。 – user2466766

+0

@JensAstrup感谢您的提示。虽然这是一个类似的问题,我无法解决它。似乎用作解决方案的“get_all_related_objects()”方法已被弃用。这似乎是一个“可行”的事情。我试图查询一个ModelA对象并从其他模型中获取所有相关的对象... – user2466766

回答

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)) 
+0

你的意思是给每个结果一个标题......我没有这样做,因为每个测试要执行的设备是不同的。 TestA没有所有这些字段...... – user2466766

+0

这就是为什么所有这些字段都是可选的,并且默认为NULL。所以你只需输入对你正在进行的测试有意义的字段。 –

+0

@BurhanKhalidi它确实使事情更容易相关。有没有办法只基于FK选择自动加载一些字段?例如如果我在报告中选择类别以仅加载一些字段?否则当我渲染表单时,所有东西都会在html中硬编码。 – user2466766

相关问题