当特定时间值从虚假回到true时

发布于 2025-01-31 18:57:01 字数 1768 浏览 1 评论 0 原文

我需要在 weaw_date (条纹日期) room_bool == true 现在全部通过urls.py /get/by/by/by/by<现在完成时,需要自动制作它。 int:pk>

views.py

    date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    reg = Registration.objects.get(rooms_id=pk)
    room = Rooms.objects.get(pk=pk)
    a = reg.leave_date.replace(tzinfo=None) >= datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S').replace(
        tzinfo=None)
    if a != True:
        reg.room_bool = True
        reg.save()
        room.room_bool = True
        room.save()

models.py

    room_num = models.IntegerField()
    room_bool = models.BooleanField(default=True) #if room_bool = True room is open, else closed.
    category = models.CharField(max_length=150)

    def __str__(self):
        return f'{self.room_num}'

    class Meta:
        verbose_name = 'Room'

#This class Registration for visitors, to open room for the them
class Registration(models.Model):
    rooms = models.ForeignKey(Rooms, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=150)
    last_name = models.CharField(max_length=150)
    admin = models.ForeignKey(User, on_delete=models.CASCADE)
    pasport_serial_num = models.CharField(max_length=100)
    birth_date = models.DateField()
    img = models.FileField()
    visit_date = models.DateTimeField()
    leave_date = models.DateTimeField()
    guest_count = models.IntegerField()

    def func(self):
        room = Rooms.objects.filter(room_bool=True)
        for i in room:
            if i.room_num == int(self.rooms):
                i.room_bool = False #this should change when adding new registration
                i.save()

I need to make it automatically when it comes leave_date(leaveted date) room_bool == True now it's all done via urls.py /get/by/<int:pk>

views.py

    date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    reg = Registration.objects.get(rooms_id=pk)
    room = Rooms.objects.get(pk=pk)
    a = reg.leave_date.replace(tzinfo=None) >= datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S').replace(
        tzinfo=None)
    if a != True:
        reg.room_bool = True
        reg.save()
        room.room_bool = True
        room.save()

models.py

    room_num = models.IntegerField()
    room_bool = models.BooleanField(default=True) #if room_bool = True room is open, else closed.
    category = models.CharField(max_length=150)

    def __str__(self):
        return f'{self.room_num}'

    class Meta:
        verbose_name = 'Room'

#This class Registration for visitors, to open room for the them
class Registration(models.Model):
    rooms = models.ForeignKey(Rooms, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=150)
    last_name = models.CharField(max_length=150)
    admin = models.ForeignKey(User, on_delete=models.CASCADE)
    pasport_serial_num = models.CharField(max_length=100)
    birth_date = models.DateField()
    img = models.FileField()
    visit_date = models.DateTimeField()
    leave_date = models.DateTimeField()
    guest_count = models.IntegerField()

    def func(self):
        room = Rooms.objects.filter(room_bool=True)
        for i in room:
            if i.room_num == int(self.rooms):
                i.room_bool = False #this should change when adding new registration
                i.save()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情痴 2025-02-07 18:57:01

您需要某些东西来控制时机,这并不容易实现。

更简单的方法是创建称为预订或您喜欢的东西的模型。然后,如果有人保留 - 创建该对象。房间可以使用方法检查预订。

class Reservation(...):
    room = models.ForeignKey(...)
    start_date = models.DateTimeField(...)
    end_date = models.DateTimeField(...)
    ...

class Room(...):
    ...

    def is_avaiable(self, date):
        return not self.reservation_set.filter(start_date__gte=date, end_date__lte=date)

或者使用 celery> celery 您计划在许多应用程序中采取很多这样的操作。

You need something to control timing, it's not easy achieved.

Easier way is to create model called Reservation or something u prefer. Then if someone reserved - create that object. Room can check reservations with methods.

class Reservation(...):
    room = models.ForeignKey(...)
    start_date = models.DateTimeField(...)
    end_date = models.DateTimeField(...)
    ...

class Room(...):
    ...

    def is_avaiable(self, date):
        return not self.reservation_set.filter(start_date__gte=date, end_date__lte=date)

Alternatively use something like apscheduler. Longer way is to use Celery, but use it only if you plan to have a lot of actions like this in many apps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文