Python 追溯Django ForeignKey关系
我有一个Django网站,在那里我想显示两个图形(Charta和 查特b)的股票清单,但我正在努力定义我的模型。赖特 现在,我的models.py中有多个相关表:Python 追溯Django ForeignKey关系,python,django,django-models,relational-database,Python,Django,Django Models,Relational Database,我有一个Django网站,在那里我想显示两个图形(Charta和 查特b)的股票清单,但我正在努力定义我的模型。赖特 现在,我的models.py中有多个相关表: from django.db import models class Stock(models.Model): name = models.CharField(max_length=100) company = models.CharField(max_length=100) def __unicode__
from django.db import models
class Stock(models.Model):
name = models.CharField(max_length=100)
company = models.CharField(max_length=100)
def __unicode__(self):
return self.name
class Charta(models.Model):
stock = models.ForeignKey(Stock)
x_axis = models.IntegerField(default=0)
y_axis = models.IntegerField(default=0)
class Chartb(models.Model):
stock = models.ForeignKey(Stock)
x_axis = models.IntegerField(default=0)
y_axis = models.IntegerField(default=0)
我的目标是创建一个股票页面,列出我的股票表中的所有股票,以及
然后是每个股票的详细信息页面,在这里我可以显示每个股票的x和y坐标
每张图表。(一旦我有了这些坐标,我就可以绘制它们,但现在我
(仅在屏幕上打印坐标)。到目前为止,我的观点是
文件如下所示:
from django.shortcuts import render, get_object_or_404
from stocks.models import Stock, Charta, Chartb
def index(request):
stock_list = Stock.objects.all()
context = {'stock_list': stock_list}
return render(request, 'stocks/index.html', context)
def detail(request, stock_id):
stock = get_object_or_404(Stock, pk=stock_id)
return render(request, 'stocks/detail.html', {'stock': stock})
这样做,我可以很容易地得到一个显示所有股票的股票页面
在我的表格中,使用以下index.html将每个链接链接到详细信息页面
文件:
股票
{%if stock_list%}
{存货清单%(存货百分比)}
{%endfor%}
{%else%}
没有存货
{%endif%}
我遇到的问题是在细节中显示每个股票的坐标
页我想要一个details.html页面,如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
</head>
<body>
<h1>Stock Details</h1>
<!-- This works fine -->
<p>The name of this stock is <strong>{{ stock.name }}</strong> </p> <br>
<p>This stock comes from <strong>{{ stock.company }}</strong> </p> <br>
<!-- This doesn't work -->
<p>The x values for this stock are: </p>
<ul>
{% for x_val in stock.charta.x_axis %}
<li>x_val</li>
{% endfor %}
</ul>
<p>The y values for this stock are: </p>
<ul>
{% for y_val in stock.charta.y_axis %}
<li>y_val</li>
{% endfor %}
</ul>
</body>
</html>
存货明细
该股票的名称为{{stock.name}
该股票来自{{stock.company}
该股票的x值为:
{stock.charta.x_axis%}
- 克休瓦尔
{%endfor%}
该股票的y值为:
{库存中y_val的百分比。charta.y_axis%}
- 尤瓦尔
{%endfor%}
但是,我不能用类似的方式调用x_值和y_值
stock.charta.x_轴
。有没有更好的方法来设置我的模型以便
我可以访问详细信息页面中每个股票的图表数据吗?
直觉上,对我来说,有一张列出股票的表格,然后
使用某种SQL连接访问每个图表的数据
我在github上提供了这个项目的一个最小示例
谢谢 在模板中调试非常困难,因为错误会被抑制!!在您的视图中调试要容易得多
def detail(request, stock_id):
stock = get_object_or_404(Stock, pk=stock_id)
import pdb; pdb.set_trace();
return render(request, 'stocks/detail.html', {'stock': stock})
上述允许将程序暂停在import pdb语句处,并允许您检查库存对象
默认情况下,在django中,foreignkey通过\u set
属性进行导航
stock.charta\u set
将返回管理器,而不是实际的图表实例。这样做应该是正确的
stock.charta\u set.all()
或者在模板中:
stock.charta\u set.all
在模板中调试非常困难,因为错误被抑制了!!在您的视图中调试要容易得多
def detail(request, stock_id):
stock = get_object_or_404(Stock, pk=stock_id)
import pdb; pdb.set_trace();
return render(request, 'stocks/detail.html', {'stock': stock})
上述允许将程序暂停在import pdb语句处,并允许您检查库存对象
默认情况下,在django中,foreignkey通过\u set
属性进行导航
stock.charta\u set
将返回管理器,而不是实际的图表实例。这样做应该是正确的
stock.charta\u set.all()
或者在模板中:
stock.charta\u set.所有的charta
和Chartb
都有stock
的ForeingKey
字段,因此当stock
是一方时,您处理的是一对多的关系
在代码中,您有:
{% for x_val in stock.charta.x_value %}
<li>x_val</li>
{% endfor %}
请注意图表集的变化。这是因为Django默认情况下为关系生成对象管理器
,称为图表集
或图表集
您可以修改模型,以便为股票中的charta
和charb
对象指定“关系名称”
class Charta(Model):
...
stock = models.ForeignKey(Stock, related_name='charta')
...
并将模板代码更改为:
{% for charta in stock.charta.all %}
<li>{{ charta.x_axis }}</li>
{% endfor %}
{%用于库存中的charta.charta.all%}
{{charta.x_轴}
{%endfor%}
Charta
和Chartb
有一个ForeingKey
字段Stock
,因此当Stock
是一方时,您处理的是一对多的关系
在代码中,您有:
{% for x_val in stock.charta.x_value %}
<li>x_val</li>
{% endfor %}
请注意图表集的变化。这是因为Django默认情况下为关系生成对象管理器
,称为图表集
或图表集
您可以修改模型,以便为股票中的charta
和charb
对象指定“关系名称”
class Charta(Model):
...
stock = models.ForeignKey(Stock, related_name='charta')
...
并将模板代码更改为:
{% for charta in stock.charta.all %}
<li>{{ charta.x_axis }}</li>
{% endfor %}
{%用于库存中的charta.charta.all%}
{{charta.x_轴}
{%endfor%}
您的意思是x\u值
是x\u轴
<代码>y_值
分别。@pythonishvili:啊,是的。谢谢,那是个打字错误。我已经编辑了这个问题——但是代码仍然不能处理这些更改。您的意思是x\u值
是x\u轴
<代码>y_值
分别。@pythonishvili:啊,是的。谢谢,那是个打字错误。我已经编辑了这个问题——虽然代码仍然不能处理这些更改。谢谢——这正是我想要的!我记得在教程中读到过关于_集属性的内容,但我想我从来没有完全掌握它。谢谢——这正是我想要的!我记得在教程中读到过关于_集属性的内容,但我想我从来没有完全掌握它。谢谢!这是有用的谢谢!这很有帮助