2013-04-20 82 views
0

我想知道如何修復從Categoria類獲取外部值的代碼,我需要獲得nombrecategoria字段,但是現在我不知道什麼是錯誤的。Django使用外鍵

models.py

class Subcategorias(models.Model): 
    codigosubcategoria = models.CharField(max_length=7, unique=True) 
    nombresubcategoria = models.CharField(max_length=30) 
    descripcionsubcategoria = models.TextField(blank=True) 
    codigocategoria = models.ForeignKey('Categorias') 

    def __unicode__(self): 
     return self.codigosubcategoria 


class Categorias(models.Model): 
    codigocategoria = models.CharField(max_length=7, unique=True) 
    nombrecategoria = models.CharField(max_length=30) 
    descripcioncategoria = models.TextField(blank=True) 

    def __unicode__(self): 
     return self.codigocategoria 

views.py

def lista_subcategorias(request): 
    subcategorias = Subcategorias.objects.all() 
    categorias = Categorias.objects.all() 
    return render_to_response('lista_subcategorias.html',{'datos':subcategorias, 'categorias':categorias}, context_instance=RequestContext(request)) 

lista_subcategorias.html

<H2>Subcategorias Registradas</H2> 

<table border=1> 
    <tr><td>codigo</td> 
    <td>Nombre</td> 
    <td>Descripcion</td> 
    <td>Categoria</td> 
    </tr> 

    <tr> 
     <ul> 

    {% for dato in datos %} 

    <td><B>{{dato.codigosubcategoria}}</B></td> 

    <td><b>{{dato.nombresubcategoria}}<b></td> 
    <td><b>{{dato.descripcionsubcategoria}}<b></td> 
     {% for item in categorias %} 
      {% if item.codigocategoria == dato %} 
       <td><B>{{item.nombrecategoria}}</B></td> 
      {% endif %} 
     {% empty %} 
      <li>empty</li> 
     {% endfor %} 
    {% empty %} 
     <li>empty</li> 
    {% endfor %} 

    </tr> 
     </ul> 
</table> 

回答

0

你並不需要獲取categorias對象。爲了得到一個相關categorias對象領域使用{{ dato.codigocategoria.nombrecategoria }}

views.py

def lista_subcategorias(request): 
    subcategorias = Subcategorias.objects.all() 
    return render_to_response('lista_subcategorias.html',{'datos':subcategorias}, context_instance=RequestContext(request)) 

lista_subcategorias.html

<H2>Subcategorias Registradas</H2> 

<table border=1> 
    <tr><td>codigo</td> 
    <td>Nombre</td> 
    <td>Descripcion</td> 
    <td>Categoria</td> 
    </tr> 

    <tr> 
    {% for dato in datos %} 

    <td><b>{{ dato.codigosubcategoria }}</b></td> 

    <td><b>{{ dato.nombresubcategoria }}</b></td> 
    <td><b>{{ dato.descripcionsubcategoria }}</b></td> <!-- don't forget to close your tags --> 
    <td><b>{{ dato.codigocategoria.nombrecategoria }}</b></td> 
    {% empty %} 
     <td colspan="4">empty</td> 
    {% endfor %} 
    </tr> 
</table> 

而且,我不知道爲什麼你使用在表中列出,這沒有任何意義。

+0

哦男人非常感謝:)它完美的作品,你也正確的使用列表。有一個非常好的一天。 – dcft 2013-04-20 22:51:49

+0

謝謝,你介意接受答案嗎?如果你有問題,人們往往會幫助更多,更好。 ;) – 2013-04-21 11:30:49