Reputation: 647
I want to add attribute I add to my model from a model linked to another
this is my models:
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
on my val_detail_swing model I add rates:
My view is :
class valuationDetailview(DetailView):
template_name = "evaluation/evaluation_detail.html"
queryset = valuation.objects.all()
context_object_name = "valuation"
and my template begins with that :
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>
the {{ valuation.val_detail_swing.rates.marketRate }} stays empty. I want in my detail view that It shows a value which is the sum of modelchoice values of my val_detail_Swing instance
Upvotes: 0
Views: 37
Reputation: 1646
Your return from rates doesn't specify the marketRate as a named thing. Use a named tuple or {{ valuation.val_detail_swing.rates.0 }} (zero being the first position).
If you show just {{ valuation.val_detail_swing.rates }} I think you'll see it as a tuple without names, just positions.
Upvotes: 1