2015-06-26 49 views
1

I'm初學者在Django。簡單Foreingkey在Django

我有一個表在我的數據庫稱爲「produto」和每個產品所屬的組,我想節目的名字在該組中相同的「爲」在出現產品的數據。

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

- >我想顯示的名稱該組中相同的「爲」在出現產品的數據。 這是什麼意思? – Praneeth

+0

您是否發現問題? – bakkal

回答

0

嘗試使用

<td>{{Produto.grupo_produto.nome}}</td>

這是否幫助?

如果不幫助嘗試

<td>{{Produto.grupo.nome}}</td>

這可能只是你的相關名稱。

+0

我試過了,但是顯示如下消息:(1054,「未知列'produto.grupo_produto_id''field list'」)。 –

+0

你可以把你的堆棧跟蹤和追溯回帖嗎? –

+0

對不起,表格結構中不存在fk。 –

0

根據您的車型,它應該是{{Produto.grupo_produto.nome}}因此,如果不工作的問題是其他地方

(1054「在‘字段列表’未知列‘produto.grupo_produto_id’」)

這表明你的數據庫不具有grupo_produto = ForeignKey(...)領域它,檢查你的DB和DB遷移,這就是你的問題是

PS:

無需嘗試{{Produto.grupo.nome}}related_name='grupo'是從Grupo對象訪問Produto對象(屬於一組產品)

哪些應該被命名爲related_name='produtos'真的,這樣 可以使用grupo.produtos,這是有道理的

你被點名related_name='grupo'的方式,這將是grupo.grupo這沒有任何意義(壞名聲)