2017-09-02 41 views
0

嗨,大家好,我想摸不着頭腦,但沒有任何運氣加起來值。的Django試圖在Django模板

所以我顯示我在其中顯示許多座位是如何提供的網頁事件,一旦用戶完成預訂我想減去展示在主頁上的量。

但我已經被困在添加所有值彌補了從量的預訂模式,減去該事件。

原來這就是我對事件

class Events(models.Model): 

    ACTIVE = (('d', "Deactivated"), ('e', "Expired"), ('a', "Active"), ('b', "Drafts"),) 
    ALCOHOL = (('0','No bring own alcohol'),('1','There will be complimentary wine pairing')) 

    user = models.ForeignKey(User, on_delete=models.CASCADE) 
    title = models.CharField(max_length=50, blank=True, default='') 
    date = models.DateField() 
    time = models.TimeField() 
    price = models.CharField(max_length=240, blank=True, default='') 
    seats = models.IntegerField() 
    created_date = models.DateTimeField(auto_now_add=True) 
    modified_date = models.DateTimeField(auto_now=True) 

模型預訂

模型

class Bookings(models.Model): 

    OPTIONS_STATUS = (('y', "Yes"), ('n', "No"), ('p', "Pending"),) 

    user = models.ForeignKey(User, on_delete=models.CASCADE) 
    event = models.ForeignKey(Events, on_delete=models.CASCADE) 
    eventdate = models.DateField() 
    event_amount = models.CharField(max_length=50, blank=True, default='') 
    guests = models.IntegerField() 
    bookingstatus = models.CharField(max_length=50, default='p', blank=True, choices=OPTIONS_STATUS) 
    created_date = models.DateTimeField(auto_now_add=True) 
    modified_date = models.DateTimeField(auto_now=True) 

我的主頁我如何得到我的數據進入循環形成的觀點

today = datetime.now().strftime('%Y-%m-%d') 
events_list_data = Events.objects.filter(active='a').filter(Q(date__gte=today)|Q(date=today)).order_by('date') 

如何我試圖在我的模板中顯示此內容

{% for event_list in events_list_data %} 
SHOW WHAT EVER DATA I AM SHOWING NOT NEEDED FOR HELP ON 
    {% for bookingguests in 
    event_list.bookings_set.all %} 
    {{ bookingguests.guests }} 
    {% endfor %} 
    Seats Left 
{% endif %} 

回答

0

通常,模板的目的不是實現邏輯。所有的邏輯都應該納入你的觀點。我建議你在你的意見中這樣做,並將它存儲在一個字典或一個列表中,並將其發送到前端。

一旦用戶完成預訂,如果要修改的HTML值而不重新加載,則可能需要使用jQuery/JavaScript的。否則,如果通過從後端進行計算再次重新加載頁面,您可以使用它。

通過使用jQuery:

$("#balance-id").html(logic to get the balance) 

通過意見計算:

from django.db.models import Sum 
user_balance = user.balance - events_data.aggregate(Sum('price')) 
return render('path/to/template', {'events_list': events_list_object, 'user_balance':user_balance}) 

在模板:

{{user_balance}} seats left 

讓我知道有任何問題。

注意:如果你想寫一些邏輯到您的模板,使用template tags。它可以用它有限的功能幫助你。

+0

不能正常工作 – Darren

+0

在計算差值後,您需要將它發送到同一個return語句中的模板。你能分享你的回報聲明,你在渲染模板的地方。 –

+0

https://stackoverflow.com/questions/46028493/getting-the-amount-of-guests-in-bookings-made-django 試試這個,製作另一篇文章,可能會給你一個更好的觀點 – Darren