首页 > 解决方案 > 模板中的模型属性

问题描述

我想添加我从链接到另一个模型的模型中添加的属性

这是我的模型:

class valuation(models.Model):
    stock = models.ForeignKey("stock",on_delete=models.CASCADE,related_name='valuation',)
    date = models.DateField(auto_now_add=True)
    val_type = models.CharField(choices=TYPE, max_length=1,default='R')
    user = models.ForeignKey("users.User", on_delete=models.CASCADE)
    decision = models.BooleanField(verbose_name="clicked if u invest?", default=False)

    def __str__(self):
        return f"{self.stock} - {self.date} - {self.val_type}"


    evolQuote = (
        (1, 'High'),
        (0, 'Undetermine'),
        (-1, 'Low'))
    class val_detail_Swing(models.Model):
            valuation = models.OneToOneField(valuation, on_delete=models.CASCADE)
            cycleMarket = models.IntegerField(choices=evolQuote, null=False, blank=False,default=0)
            news = models.IntegerField(choices=evolQuote,null=False, blank=False,default=0)
            managementPostion = models.IntegerField(choices=evolQuote,null=False, blank=False,default=0)
            short =models.IntegerField(choices=evolQuote,null=False, blank=False,default=0)
            BARCHART_analysts = models.IntegerField(choices=evolQuote, blank=True, verbose_name= "What BARCHAT says? ",default=0)
            TRADINGVIEW_analysts = models.IntegerField(choices=evolQuote, blank=True, verbose_name= "What TRADINGVIEW says? ",default=0)
            INVESTING_analysts = models.IntegerField(choices=evolQuote, blank=True,verbose_name= "What INVESTING says? ",default=0)
            parabolics = models.IntegerField(choices=evolQuote,null=False, blank=False,default=0)
            trix = models.IntegerField(choices=evolQuote,null=False, blank=False,default=0)
            arron = models.IntegerField(choices=evolQuote,null=False, blank=False,default=0)
            macd = models.IntegerField(choices=evolQuote,null=False, blank=False,default=0)
    
    def rates(self):
        marketRate = self.cycleMarket + self.news + self.managementPostion + self.short
        analystRate = self.BARCHART_analysts + self. TRADINGVIEW_analysts + self.INVESTING_analysts
        indicatorRate = self.parabolics + self.arron + self.macd
return marketRate, indicatorRate,analystRate

在我的 val_detail_swing 模型上,我添加了费率:

我的观点是:

class valuationDetailview(DetailView):
    template_name = "evaluation/evaluation_detail.html"
    queryset = valuation.objects.all()
    context_object_name = "valuation"

我的模板以此开头:

div id="accordion">
  <div class="card">
    <div class="card-header" id="headingOne">
      <h5 class="mb-0">
        <button class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
          <div class="row">
                      <div class="col">Market trend</div>
          <div class="center"><input class="speech-bubble" value="{{ valuation.val_detail_swing.rates.marketRate }}" id="marklRate" name="markRate"></div>
          </div>
        </button>
      </h5>
    </div>

{{valuation.val_detail_swing.rates.marketRate }} 保持为空。我希望在我的详细视图中显示一个值,该值是我的 val_detail_Swing 实例的模型选择值的总和

标签: django-modelsdjango-templates

解决方案


您从费率中获得的回报并未将 marketRate 指定为命名事物。使用命名元组或 {{valuation.val_detail_swing.rates.0 }}(零是第一个位置)。

如果你只显示 {{valuation.val_detail_swing.rates }} 我想你会看到它是一个没有名字的元组,只是位置。


推荐阅读