2017-03-14 76 views
0

好,我有一個問題,我不知道如何解決它。我在我的應用三種模式:如何查詢Django

class Hecho(models.Model): 
    codigo = models.CharField(max_length=1) 
    hecho = models.CharField(max_length=100) 

class Beneficiario(models.Model): 
    tipoDocumento = models.CharField(max_length=150) 
    numeroDocumento = models.IntegerField() 
    nombre = models.CharField(max_length=150) 

class HechoBeneficiario(models.Model): 
    beneficiario = models.ForeignKey(Beneficiario) 
    hecho = models.ForeignKey(HechoVictimizante) 

正如你可以看到模型HechoBeneficiario涉及其他兩種模式。 我的問題就像使用Beneficiario模型,我可以得到模型Hecho並在模板中繪製它?

+0

你到目前爲止嘗試過什麼?你甚至想要做什麼查詢?你有沒有閱讀「製作查詢」文檔? – Soviut

+0

你想做什麼?任何期望的輸出?請編輯您的問題,並正確地問它 –

+0

'如何查詢django'的第一個Google結果:https://docs.djangoproject.com/en/1.10/topics/db/queries/ – ChidG

回答

0

在你的情況下最好使用many to many字段。您的模型看起來就像這樣:

class Beneficiario(models.Model): 
     tipoDocumento = models.CharField(max_length=150) 
     numeroDocumento = models.IntegerField() 
     nombre = models.CharField(max_length=150) 

class Hecho(models.Model): 
    codigo = models.CharField(max_length=1) 
    hecho = models.CharField(max_length=100) 
    beneficiarios = models.ManyToManyField(Beneficiario, related_name='hechos') 

而且,您可以使用此代碼獲取所有hechos爲Beneficiario:

hechos = beneficiario_object.hechos.all() 

並使用此代碼獲取所有Beneficiario爲HECHO:

beneficiarios = hecho_object.beneficiarios.all() 

但是你應該知道,當你嘗試訪問多個領域時,django每次都會碰到數據庫。

beneficiarios = Beneficiario.objects.prefetch_related('hechos') 
for beneficiario in beneficiarios: 
    print(beneficiario.hechos.all()) 

它會打到數據庫只有2次:爲了防止這一點,當檢索您的所有Beneficiario模型,這樣就可以使用prefetch_related