我在Django打招呼。
我在我的数据库中有一个名为'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 %}
我迷失在这里,已经出现了一些错误,但我不知道这样做。
// UPDATE
我解决了以下方式
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 %}
https://docs.djangoproject.com/en/1.8/topics/db/sql/
我不知道如果做得对,我想提示。
答案 0 :(得分:0)
尝试使用
<td>{{Produto.grupo_produto.nome}}</td>
这有帮助吗?
如果这没有帮助尝试
<td>{{Produto.grupo.nome}}</td>
它可能只是您的相关名称。
答案 1 :(得分:0)
根据你的模型,它应该是{{Produto.grupo_produto.nome}}
所以如果这不起作用,问题就在别处
(1054,“字段列表中的未知栏'produto.grupo_produto_id'”)
这表明您的数据库中还没有grupo_produto = ForeignKey(...)
字段,检查您的数据库和数据库迁移,这就是您的问题所在
P.S:
无需尝试{{Produto.grupo.nome}}
related_name='grupo'
用于访问Produto
对象(属于某个群组的产品)中的Grupo
个对象
哪个应该以{{1}}的名字命名
你可以使用related_name='produtos'
,这是有道理的
你命名为grupo.produtos
的方式,它将是related_name='grupo'
没有意义(坏名称)