0

내가 해결할 수없는 장고 프레임 워크로 데이터베이스를 디자인하는 데 문제가 있습니다. 나는 다음과 같은 모델을 가지고 말 :동일한 외래 키를 공유하는 severall 모델의 모든 개체 가져 오기 - 가능합니까?

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() 

내 질문 : 그것은 가능하면 보고서에서 같은 oject를 공유하는 테스트의 B, C 및 D의 모든 객체를 얻는 방법? 나는 각 모델 (TestB, TestC 또는 TestD)을 개별적으로 쿼리하기를 원하지 않습니다. 왜냐하면 실제로 더 많은 테스트 모델이 있기 때문입니다.
도움이 많이 필요합니다.

+0

당신이 당신에게 말하고있는 한 MODELA 개체가, 당신은 관련 ModelB, C, 및 DS에를 얻으려면 :

보고서에 대한 모든 결과를 얻으려면? 이것은 그것도 귀하의 질문에 관련이있을 것 같습니다 http://stackoverflow.com/a/2315053/4974980 –

+0

@ JensAstrup 고마워요. 그것이 바로 내가하고 싶은 일입니다. 나는 그것을 보일 것이다. – user2466766

+0

@JensAstrup 팁 주셔서 감사. 비슷한 문제 였지만 해결할 수 없었습니다. 해결책으로 사용 된 "get_all_related_objects()"메소드가 더 이상 사용되지 않는 것 같습니다. 그것은 "행할 수있는"일처럼 보입니다. ModelA 객체를 쿼리하여 다른 모델의 모든 관련 객체를 얻으려고합니다. – user2466766

답변

1

왜 3 가지 모델이 본질적으로 같은 것입니까? 이 시도 :

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 선택에 따라 일부 필드 만 자동으로로드하는 방법이 있습니까? 예를 들어 일부 필드 만로드하려면 보고서에서 category를 선택합니까? 그렇지 않으면 양식을 렌더링 할 때 html로 모든 것이 하드 코딩됩니다. – user2466766