Django试图在django模板中添加值

时间:2017-09-02 23:39:25

标签: django python-2.7

嗨,大家好我想弄清楚这一点,但没有运气。

所以我在主页上显示我的活动,显示有多少座位可用,一旦用户预订我想减去主页上显示的金额。

但我已经停留在预订模式中为该事件添加所有值,减去该数量。

所以这就是我所拥有的

事件模型

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 %}

1 个答案:

答案 0 :(得分: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。它可以通过其有限的功能为您提供帮助。