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

相關問題