2013-08-22 36 views
0

嗨,大家好,我如何從django中的「第三」相關模型中獲取數據?

我有這個型號:

class Pais(models.Model): 
    nome = models.CharField('Nome', max_length=50) 


class Brinq(models.Model): 
    descricao = models.CharField('Nome', max_length=50) 

class Filhos(models.Model): 
    nome = models.CharField('Nome', max_length=50) 
    idade = models.IntegerField('Idade') 
    pai = models.ForeignKey('Pais') 
    brinq = models.ForeignKey('Brinq', related_name='Brinq') 

這一觀點:

def editPai(request, idpai=None): 
    if idpai: 
     pai = Pais.objects.get(id=idpai) 
    else: 
     pai = None 

    ItensInlineFormSet = inlineformset_factory(Pais, Filhos, form=FilhosForm, extra=1) 
    formPais = PaisForm() 
    formsetItens = ItensInlineFormSet(instance=pai) 

    return render_to_response("base.html", { 
     "formPais": formPais, "formsetItens": formsetItens 
    }, context_instance=RequestContext(request),) 

這個形式:

class PaisForm(ModelForm): 
    class Meta: 
     model = Pais 

class FilhosForm(ModelForm): 
    class Meta: 
     model = Filhos 

好吧,我怎樣才能得到「descricao 「我的模板中的」Brinq「模型的價值?我認爲這是一個簡單的問題,但是,我嘗試着從網上尋找,再看和尋找,而且我沒有找到任何有關這方面的信息。

我開始使用django無法做到這一點,我想相信我錯了,但正如我所說的,我沒有在互聯網上找到任何有關這方面的信息。

我嘗試:

{% for form in formsetItens %} 
    <tr> 
     <td> {{ form.nome }}</td> 
     <td> {{ form.idade }}</td> 
     <td> {{ form.brinq__descricao }}</td> 
    </tr> 
    {% endfor %} 

{{ form.brinq.descricao}}來,並沒有什麼... :(

誰能幫我解決這個問題

問候,

+0

我不明白你的問題。如果這是「Pais」表單,則不能訪問「brinq.descricao」,因爲不存在關係「pais.brinq」。 'Pais'通過n:m'Filhos'關係具有幾個綁定的'Brinq'模型。此外,您可以使用'form.instance.your_related_model.some_property'進行測試。 – danihp

+0

@danihp我嘗試訪問'Filhos'模型,它有'brinq' FK字段到'Brinq'模型。我的問題是,如何使用'Filhos'模型訪問'brinq'值?就像在我的例子中,我有'formsetItens'是來自'Filhos'的一個inlineformset。我認爲django在查詢獲取我所有的'Filhos'值時,django放入一些JOIN來獲取所有相關的字段os'Filhos'模型。 –

回答

0

您正在嘗試?來遍歷一個FormSet,如docs所說:「formset使你能夠遍歷formset中的表單,並像你一樣顯示它們一個常規表格「。

所以,你可以例如執行以下操作以顯示包含在表單中的所有字段:

{% for form in formsetItens %} 
    {{ form.as_table }} 
{% endfor %} 

..或者它是否適合你的使用情況,你可以換各種形式成表單標籤,並loop在表單域上:

{% for form in formsetItens %} 
    <form action="/contact/" method="post"> 
     {% for field in form %} 
      <div class="fieldWrapper"> 
       {{ field.errors }} 
       {{ field.label_tag }} {{ field }} 
      </div> 
     {% endfor %} 
     <p><input type="submit" value="Send message" /></p> 
    </form> 
{% endfor %} 
+0

我的問題不是如何顯示'Filho'窗體。我嘗試訪問Filhos模型,該模型將Brinq FK字段添加到Brinq模型中。我的問題是,如何使用Filhos模型訪問brinq值?就像在我的例子中,我有formsetItens是Filhos的一個內聯集。我認爲django當得到查詢來獲取我所有的Filhos值時,django會放一些JOIN來獲取所有相關的字段os Filhos model –

+0

如果您只想訪問模型的相關字段,則不應使用FormSets。正如名稱所言,FormSets用於處理表單。 –

+0

好的,但我需要懸掛窗體並顯示此值。我有一個表有幾列,只有3列是表格,其他人我需要這個值只顯示給用戶。我怎樣才能做到這些? –

相關問題