Python Django中的简单Foreingkey

Python Django中的简单Foreingkey,python,django,foreign-keys,django-queryset,many-to-one,Python,Django,Foreign Keys,Django Queryset,Many To One,我是Django的begginer 我的数据库中有一个名为“produto”的表,每个产品都属于一个组,我想在显示产品数据的同一个“for”中显示该组的名称 models.py from django.db import models # Create your models here. class Grupo(models.Model): codigo = models.AutoField(primary_key=True) nome = models.CharField(m

我是Django的begginer

我的数据库中有一个名为“produto”的表,每个产品都属于一个组,我想在显示产品数据的同一个“for”中显示该组的名称

models.py

from django.db import models

# Create your models here.
class Grupo(models.Model):
    codigo = models.AutoField(primary_key=True)
    nome = models.CharField(max_length=40, blank=True, null=True)
    tp_linha = models.IntegerField()
    data_alt = models.DateField(blank=True, null=True)
    data_inc = models.DateField(blank=True, null=True)
    status = models.CharField(max_length=1)

    class Meta:
        managed = False
        db_table = 'grupo'

class Produto(models.Model):
    codigo = models.AutoField(primary_key=True)
    nome = models.CharField(max_length=80)
    referencia = models.CharField(max_length=30)
    fabricante = models.IntegerField()
    quantidade = models.DecimalField(max_digits=17, decimal_places=6)
    preco_venda = models.DecimalField(max_digits=15, decimal_places=2, blank=True, null=True)
    #...

    grupo_produto = models.ForeignKey(Grupo, related_name='grupo')
    def __str__(self):
        return self.nome

    class Meta:
        managed = False
        db_table = 'produto'
views.py

from django.shortcuts import render_to_response
from django.shortcuts import render

from .models import Servico, Produto, Grupo

# Create your views here.
def home(request):
    servicos = Servico.objects.using('mydatabase').all()
    produtos = Produto.objects.using('mydatabase').all()
    grupos = Grupo.objects.using('mydatabase').all()
    return render(request, 'home.html', {'servicos': servicos, 'produtos': produtos, 'grupos': grupos})
home.html

{% for Produto in produtos %}
    <tr>
        <td>{{Produto.codigo}}</td>
        <td>{{Produto.nome}}</td>
        <td>{{Produto.referencia}}</td>
        <td>{{Produto.fabricante}}</td>
        <td>{{Produto.quantidade}}</td>
        <td>R$ {{Produto.preco_venda}}</td>
        <td>{{Grupo.nome}}</td>
    </tr>
{% empty %}
    <span>Nenhum resultado encontrado</span>
{% endfor %}
我在这里迷路了,已经出现了一些错误,但我不知道该怎么办

//更新

我决定走这条路

from django.shortcuts import render_to_response
from django.shortcuts import render

from .models import Grupo, Produto

# Create your views here.
def home(request):
    produtos = Produto.objects.using('horus').raw('SELECT produto.codigo, produto.nome, produto.quantidade, produto.preco_venda, grupo.nome AS nome_grupo FROM produto LEFT JOIN grupo on (produto.grupo = grupo.codigo);');

    return render(request, 'home.html', {'produtos': produtos})

{% for Produto in produtos %}
        <tr>
            <td>{{Produto.codigo}}</td>
            <td>{{Produto.nome}}</td>
            <td>{{Produto.quantidade}}</td>
            <td>R$ {{Produto.preco_venda}}</td>
            <td>{{Produto.nome_grupo}}</td>
        </tr>
{% empty %}
    <span>Nenhum resultado encontrado</span>
{% endfor %}
我不知道是否做对了,我想要一些提示。

尝试使用

{{Produto.grupo_Produto.nome}

这有用吗

如果那没用,试试看

{{Produto.grupo.nome}

它可能只是您的相关名称。

尝试使用

{{Produto.grupo_Produto.nome}

这有用吗

如果那没用,试试看

{{Produto.grupo.nome}


它可能只是您的相关名称。

根据您的模型,它应该是{{Produto.grupo_Produto.nome}},因此如果这不起作用,问题就在别处

1054,“字段列表”中的未知列“produto.grupo_produto_id”

这表明您的DB没有grupo_produto=ForeignKey。。。字段,检查您的数据库和数据库迁移,这就是您的问题所在

附言:

无需尝试{{Produto.grupo.nome}}相关的_name='grupo'用于从属于组的grupo对象产品访问Produto对象

应该被命名为related_name='produtos'真的,那样的话 您可以使用grupo.produtos,这很有意义


你命名related_name='grupo'的方式是grupo.grupo,它没有任何意义,坏名字

根据你的模型,它应该是{{Produto.grupo_Produto.nome}},所以如果这不起作用,问题就在别处

1054,“字段列表”中的未知列“produto.grupo_produto_id”

这表明您的DB没有grupo_produto=ForeignKey。。。字段,检查您的数据库和数据库迁移,这就是您的问题所在

附言:

无需尝试{{Produto.grupo.nome}}相关的_name='grupo'用于从属于组的grupo对象产品访问Produto对象

应该被命名为related_name='produtos'真的,那样的话 您可以使用grupo.produtos,这很有意义


您命名related_name='grupo'的方式是grupo.grupo,这没有任何意义。坏名称

此外,如果您有错误,请提供您收到的错误的堆栈跟踪->我想在显示产品数据的同一“for”中显示该组的名称。这意味着什么?你发现问题了吗?是的,在我的数据库中,表之间没有连接,那么,我已经输入了SQL代码。另外,如果你有错误,请提供你收到的错误的堆栈跟踪->我想在显示产品数据的同一个“for”中显示该组的名称。这是什么意思?你发现问题了吗?是的,在我的数据库中,表之间没有连接,那么,我已经输入了SQL代码。我尝试了此操作,但显示了以下消息:1054,“字段列表”中的未知列“produto.grupo_produto_id”。你可以将堆栈跟踪和跟踪放回post pls中吗?对不起,表结构中不存在fk。请重试{{Produto.grupo.nome}我尝试了这个,但显示了以下消息:1054,“字段列表”中的未知列“Produto.grupo_Produto_id”。你能把堆栈跟踪和跟踪放回post吗?对不起,fk在表结构中不存在。试试{Produto.grupo.nome}