Django вызов функции объекта, возвращающий значение фразы в шаблоне - PullRequest
0 голосов
/ 05 мая 2020

У меня есть эта модель:

class Church(models.Model): # The Category table name that inherits models.Model
    name = models.TextField() #Like a varchar
    logo = models.TextField(blank=True) #Like a varchar

class Event(models.Model): # The Category table name that inherits models.Model
    name = models.TextField(blank=True) #Like a varchar
    desc = models.TextField(blank=True) #Like a varchar
    address = models.TextField(blank=True)
    date = models.DateField(default=timezone.now)
    reservation_date = models.DateField()
    event_participant = models.IntegerField(blank=False,default=0)
    church_id = models.ForeignKey(Church, on_delete=models.CASCADE)

class Visitor(models.Model): # The Category table name that inherits models.Model
    name = models.CharField(max_length=200) #Like a varchar
    mail = models.TextField() #Like a varchar
    church_id = models.ForeignKey(Church, on_delete=models.CASCADE)

class Reservation(models.Model): # The Category table name that inherits models.Model
    event_id = models.ForeignKey(Event, on_delete=models.CASCADE)
    visitor_id = models.ForeignKey(Visitor, on_delete=models.CASCADE)
    church_id = models.ForeignKey(Church, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=0)

В моем файле шаблона я хочу показать только левый event_participant. Для этого я возьму событие и перейду в раздел «Резервирование» и возьму там количество из каждой строки, которое соответствует event_id. Затем я удалю это число из event_participant и верну это число. В моем views.py я пробовал это:

@property
def count_event_participant(event):
    return int(event.event_participant) - int(Reservation.objects.filter(event_id=event))

def events_list(request):
    events = Event.objects.all().order_by('date')
    return render(request, 'events_list.html', {'events': events})

И в моем файле шаблона я пробовал это:

<i class="fas fa-users"></i> {{ count_event_participant(event) }}

Я знаю, что это неверно, но я зависаю, я получаю не моя голова ясна. Что я пропустил, извините за вопрос новичка.

...