Django使用外键

时间:2013-04-20 22:10:22

标签: django foreign-keys models

我想知道如何修复从类别中获取外来值的代码,我需要获得nombrecategoria字段,但目前我不知道什么是错的。

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>

1 个答案:

答案 0 :(得分:0)

您无需获取分类对象。要访问相关分类对象的字段,请使用{{ 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>

另外,我不知道你为什么在表格中使用该列表,这没有任何意义。