Показать, открыт ли ресторан в текущее время и день

python django python-3.x django-models django-views

100 просмотра

1 ответ

У меня есть две модели: одна для ресторана, другая для работы. Время работы имеет отношение к внешнему ключу с рестораном, так как время работы может отличаться в разные дни недели. Я хотел показать, открыт ли или закрыт ресторан в текущее время и в текущий день. Будет ли лучше написать код в views.py или создать для этого тег шаблона? Поскольку соглашение говорит, что взгляды должны быть тонкими.

модели для ресторана и наработки

class Restaurant(models.Model):
    owner = models.ForeignKey(User)
    name = models.CharField(max_length=150, db_index=True)
    address = models.CharField(max_length=100)


class OperatingTime(models.Model):
    MONDAY = 1
    TUESDAY = 2
    WEDNESDAY = 3
    THURSDAY = 4
    FRIDAY = 5
    SATURDAY = 6
    SUNDAY = 7

    DAY_IN_A_WEEK = (
        (MONDAY, 'Monday'),
        (TUESDAY, 'Tuesday'),
        (WEDNESDAY, 'Wednesday'),
        (THURSDAY, 'Thursday'),
        (FRIDAY, 'Friday'),
        (SATURDAY, 'Saturday'),
        (SUNDAY, 'Sunday'),
        )
    # HOURS = [(i, i) for i in range(1, 25)]
    restaurant = models.ForeignKey(Restaurant,related_name="operating_time")
    opening_time = models.TimeField()
    closing_time = models.TimeField()
    day_of_week = models.IntegerField(choices=DAY_IN_A_WEEK)

    def __str__(self):
        return '{} ---- {}'.format(self.opening_time, self.closing_time)

views.py

def home(request):
    restaurant = Restaurant.objects.all()
    print('restaurant',restaurant)
    operating_time = OperatingTime.objects.all()
    print('operating time',operating_time)
    for operating_time in operating_time: # Tried to find if restaurant is opened or closed based on opening time & closing time in current time and day for each restaurant
        opening = operating_time.opening_time
        closing = operating_time.closing_time
        print('opening',opening)
    current_time = datetime.now()
    current_time = current_time.time()
    if current_time < closing or opening< current_time:
        print('opening')
    else:
        print('closed')
    return render(request, 'restaurant/homepage.html', {'restaurant':restaurant})

Как я могу найти это? Лучше ли кодировать представления или создавать тег шаблона?

Автор: Serenity Источник Размещён: 08.11.2019 11:06

Ответы (1)


0 плюса

Я работаю с Django на своем рабочем месте около месяца, и меня учили не вводить логику в свои взгляды. Представление должно быть только для передачи данных из базы данных или публикации данных в базе данных. Логика должна быть сделана в тегах шаблона.

Автор: Daniel Schwarze Размещён: 20.08.2016 09:33
Вопросы из категории :
32x32