2013-04-20 83 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