Django 1.6 ORM加入

科尔顿·艾伦

我正在尝试将特定资产组合中的所有资产显示在页面上。

我需要知道:A)。如何获得投资组合的主键,B)。如何在代码中编写联接,以及C)。如果我什至以正确的方式解决此问题(另一个CBV或FBV是否更合适,或者get_assets()函数正常吗?)。

数据库设置:

class Portfolios(models.Model):
    #code

class PortfoliosAssets(models.Model):
    portfolio = models.ForeignKey(Portfolios)
    asset = models.ForeignKey(Assets)

class Assets(models.Model):
    #code

我想用ORM编写的SQL:

SELECT A.ticker 
FROM assets A 
    INNER JOIN portfolios_assets PA ON PA.asset = A.id
WHERE PA.portfolio = --portfolio_pk

代码:

class ShowPortfolios(DetailView):
    model = Portfolios
    template_name = 'show_portfolios.html'

    def get_assets(self):
        #obviously not how to get the portfolios pk or columns from the ASSETS table.
        assets = PortfoliosAssets.objects.get(portfolio=portfolio_pk)
        for asset in assets:
           #run some query to get each asset's info but this seems obviously wrong.
丹尼尔·罗斯曼

投资组合和资产之间的关系是多对多的。您应该明确定义它,并完全删除PortfolioAsset模型(Django将为您创建一个等效的m2m连接表)。

class Portfolio(models.Model):
    assets = models.ManyToManyField("Asset")

(请注意,约定是对模型使用单数名称,而不是复数。)

完成后,您根本不需要任何其他方法:您只需通过即可从投资组合访问资产portfolio.assets.all()或者,在模板中:

{% for asset in portfolio.assets.all %}
    {{ asset.ticker }}
{% endfor %}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

左加入Django ORM

来自分类Dev

左加入Django ORM

来自分类Dev

在Django ORM中加入子查询

来自分类Dev

Django ORM-通过表加入多对多

来自分类Dev

带有加入 sql 的 Django ORM SELECT

来自分类Dev

Django ORM bulk_create 1:1 相关模型

来自分类Dev

不支持的CharField查找'product_name'或不允许在字段上加入。Django Python ORM

来自分类Dev

Django Left加入方式

来自分类Dev

Django查询和加入

来自分类Dev

Django - 加入特定列

来自分类Dev

加入雄辩的 orm Php laravel

来自分类Dev

在只有1个对象可供检索时,在Django ORM中过滤与获取性能

来自分类Dev

O(1)Django ORM策略来查询相关对象的相关对象

来自分类Dev

Django ORM:在不执行N + 1查询的情况下检索帖子和最新评论

来自分类Dev

使用Django ORM在1:n:m数据库关系中查找多个X元素

来自分类Dev

与SELECT col1 FROM table WHERE col2 = somestring对应的Django ORM是什么?

来自分类Dev

在只有1个对象可供检索时,在Django ORM中过滤与获取性能

来自分类Dev

Django ORM跨产品

来自分类Dev

AJAX的Django ORM问题

来自分类Dev

Django ORM内部联接

来自分类Dev

Join with subquery in Django ORM

来自分类Dev

简化Django ORM查询

来自分类Dev

Django ORM性能问题

来自分类Dev

Django ORM特定查询

来自分类Dev

Django:ORM设计问题

来自分类Dev

Django ORM查询

来自分类Dev

Django ORM查找语法

来自分类Dev

Django ORM内部联接

来自分类Dev

Django ORM JOIN查询