2016-09-23 38 views
0

任何人都可以幫助我從這個模型結構獲取數據嗎?因爲我現在很難做好幾個小時。從多個直接關係中獲取模型實例

首先,我想從所有Doctor它有讓所有不同SubSpecialization給定Specialization.title

其次我想獲得的所有Doctor具有特定Specialization.title,沒有SubSpecialization

這裏是Doctor模型

class Doctor(models.Model): 
    name = models.CharField(max_length=50) 
    room_no = models.IntegerField() 
    floor_no = models.IntegerField() 
    contact_no = models.CharField(max_length=50, blank=True, null=True) 
    notes = models.CharField(max_length=70, blank=True, null=True) 

這是模型Doctor關係連接到SpecializationSubSpecialization

class DoctorSpecialization(models.Model): 
    doc = models.ForeignKey(Doctor, models.DO_NOTHING) 
    spec = models.ForeignKey('Specialization', models.DO_NOTHING) 

class DoctorSubSpecialization(models.Model): 
    doc = models.ForeignKey(Doctor, models.DO_NOTHING) 
    sub_spec = models.ForeignKey('SubSpecialization', models.DO_NOTHING) 

這就是我要制定標準的地方。

class Specialization(models.Model): 
    title = models.CharField(unique=True, max_length=45) 
    point = models.IntegerField() 

class SubSpecialization(models.Model): 
    title = models.CharField(max_length=100) 

還有就是SpecializationSubSpecialization之間沒有直接的關係,請幫助。

+0

據我瞭解,你想有一個多到多一方的'醫生'與另一方的'專業化'和'子專業化'之間的關係。那麼對DoctorSpecialization和DoctorSubpecialization模型的需求是什麼? –

+0

我的意思是你可以直接在'Doctor'和'Specialization' /'Subspecialization'之間使用'ManyToManyField'。 –

+0

@MuhammadSaeedArabi哦,是的,這是結構感謝指出。 –

回答

1

首先,您的專業化和亞專業化與Doctor都是多對多的關係。你應該明確聲明,並刪除這些干預模型,除非你需要存儲其他信息。

class Doctor(models.Model): 
    ... 
    specializations = models.ManyToManyField('Specialization') 
    subspecializations = models.ManyToManyField('SubSpecialization') 

現在,您可以查詢所有subspecializations誰擁有一個特定的專業化醫生:

SubSpecialization.objects.filter(doctor__specialization__title='My Specialization') 

你的第二個查詢沒有意義鑑於有專業化和subspecialization之間沒有任何關係,你需要澄清你的意思是「沒有特定專業化的亞專業化」。

編輯

找到誰擁有一個特定的專業,然後沒有subspecializations在所有醫生:

Doctor.objects.filter(specialization__name="My Specialization", 
         subspecialization=None) 
+0

感謝您的迴應先生,我想澄清第二個查詢應該得到所有'Doctor'有一個給定的'Specialization.title'和沒有記錄('id')在'SubSpecialization'。希望我明白地解釋一下。並請等待,因爲我正在爲您的答案工作。 –

+0

你確定這是正確的結構嗎?這聽起來像你想讓醫生有一個專業化,然後是一些專業化的SubSpecializations。 –

+0

我認爲不是因爲醫生可能有多重專業化和亞專科化先生。 –

相關問題