これでいいです。私はあなたがビールのユーザー、ビール、およびレビューを作成することができますこのWebアプリに取り組んでいます。異なるモデルインスタンス(Django)のユーザー入力の平均値を取得する
models.py:
from django.db import models
from django.conf import settings
class BeerModel(models.Model):
user = models.ForeignKey(User, default=1)
name = models.CharField(max_length=254, default="")
style = models.CharField(max_length=254, default="")
ibu = models.IntegerField(default="")
calories = models.IntegerField(default="")
abv = models.IntegerField(default="")
location = models.CharField(max_length=254, default="")
class Meta:
verbose_name_plural = 'Beers'
def __str__(self):
return self.name
def avg(self):
return
class RateModel(models.Model):
FIVE_REVIEWS = (
('5', '5'),
('4', '4'),
('3', '3'),
('2', '2'),
('1', '1'),
)
TEN_REVIEWS= (
('10', '10'),
('9', '9'),
('8', '8'),
('7', '7'),
('6', '6'),
('5', '5'),
('4', '4'),
('3', '3'),
('2', '2'),
('1', '1'),
)
user = models.ForeignKey(User, default=1)
beer = models.ForeignKey(BeerModel)
aroma = models.PositiveIntegerField(max_length=2, choices=FIVE_REVIEWS, default="5")
appearance = models.PositiveIntegerField(max_length=2, choices=FIVE_REVIEWS, default="5")
taste = models.PositiveIntegerField(max_length=2, choices= TEN_REVIEWS, default= "10")
class Meta:
verbose_name_plural = 'Ratings'
def __str__(self):
return str(self.beer)
あなたが言うことができるように、あなたが別のユーザーを使用して異なるビールのレビューを作成することができます。
私の目標は、HTMLにdjangoを出力し、ビールごとに「アロマ、外観、味」の「平均」値を設定することです。
これは私が私のviews.pyに持っているものです。
@login_required
def home(request):
beers = BeerModel.objects.order_by('name')
rates = RateModel.objects.order_by('user')
avg = RateModel.objects.aggregate(aroma = Avg('aroma'), appearance = Avg('appearance'), taste = Avg('taste'))
dict = {'records': beers, 'rates': rates, 'avg': avg}
return render(request, 'beer_tracker/home.html', context=dict)
は、これは私が私のhome.htmlに持っているものです。
残念ながら<h2>Overall Rating</h2>
{% for beers in records %}
<div class="table">
<h4><b>Beer's Overall Ratings: </b>{{ beers.name}}</h4>
<ul>
<li><b>Aroma: </b>{{ avg.aroma }}</li>
<li><b>Appearance: </b>{{ avg.appearance }}</li>
<li><b>Taste: </b>{{ avg.taste }}</li>
</ul>
</div>
{% endfor %}
、あなたが言うことができるように、私を得ますすべてのビールの平均。私は特定のビールごとに平均が必要です。
User1の アロマ:3、 外観:3、 味:8、
User2の私はビールを持っている場合
ので、2人のユーザーが2件のレビューを与えるのは、ブルームーンを言わせて、私が持っています アロマ:5、 外観:5、 味:10、
私はブルームーンのために取得したいと思います:
アロma:4, 外観:4, 味覚:9,
しかし、他のビールのレビュー値は依然として維持されています。
ありがとうございます。
アンソニー
RateModelでメソッドを作成する必要がありますか、または私のviews.pyで関数を作成する必要がありますか? – Anthony