Django使用外键

Django使用外键,django,foreign-keys,models,Django,Foreign Keys,Models,我想知道如何修复代码,以便从类Categoria获取外部值,我需要获取nombrecategoria字段,但目前我不知道出了什么问题 models.py class Subcategorias(models.Model): codigosubcategoria = models.CharField(max_length=7, unique=True) nombresubcategoria = models.CharField(max_length=30) descripcionsub

我想知道如何修复代码,以便从类Categoria获取外部值,我需要获取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))
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>
        <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>
<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>
注册的子类别 科迪戈 名义 描述 范畴
    {dato%中的dato为%1} {{dato.codigo子类}} {{dato.nombresubcategoria}} {{dato.descriptionSubcategoria}} {categorias%%中的项的%s} {%if item.codigocateria==dato%} {{item.nombrecategoria} {%endif%} {%empty%}
  • 空的
  • {%endfor%} {%empty%}
  • 空的
  • {%endfor%}

您不需要获取categorias对象。要访问相关categorias对象的字段,请使用
{{dato.codigocateria.nombrecategoria}

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))
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>
        <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>
<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>
注册的子类别 科迪戈 名义 描述 范畴 {dato%中的dato为%1} {{dato.codigo子类}} {{dato.nombresubcategoria}} {{dato.descriptionsubcategoria}} {{dato.codigotegoria.nombrecategoria}} {%empty%} 空的 {%endfor%}
另外,我不知道你为什么要在表格中使用这个列表,这没有任何意义。

哦,非常感谢:)它工作得很好,你使用列表也是对的。祝你度过愉快的一天。谢谢,你介意接受答案吗?如果你有问题,人们往往会提供更多更好的帮助