作为任务的一部分,我创建了一个“公寓列表”网站。我设法做到了,但是现在我需要为此建立一个“预订系统”。
[基本思想是,登录用户可以从列出的公寓中选择一个公寓,选择一个“开始日期”和“结束日期”(如果尚未预订该公寓),然后预定该公寓。
我是一名Django新手,需要一些指针才能从此任务开始。
我有一个公寓模型,其中包含我用来通过模板打印所有内容的所有公寓信息。
我正在使用提供的django用户模型进行注册/登录。
我需要哪种型号的预订,以及如何连接所有东西?我尝试制作预订模型,但不知道下一步该怎么做。
我不是要你为我解决这个问题,而是要有人向我解释(如果可能的话),我将如何继续独自实现这一目标。
这是我的公寓模型:
class Apartment(models.Model):
title = models.CharField(max_length=200)
address = models.CharField(max_length=200)
city = models.CharField(max_length=100)
state = models.CharField(max_length=100)
zipcode = models.CharField(max_length=20)
description = models.TextField(blank=True)
price = models.IntegerField()
bedrooms = models.IntegerField()
bathrooms = models.DecimalField(max_digits=2, decimal_places=1)
garage = models.IntegerField(default=0)
size = models.IntegerField()
photo_main = models.ImageField(upload_to='photos/%Y/%m/%d/')
photo_1 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_2 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_3 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_4 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
in_rent = models.BooleanField(default=False)
list_date = models.DateTimeField(default=datetime.now, blank=True)
def __str__(self):
return self.title
非常感谢您!
在您的情况下,一个公寓可以有多个预订,这意味着您需要在预订中有一个字段指向一个公寓,这可以使用ForeignKey来完成]
您的模型应如下所示:
Reservation(models.Model)
apartment = models.ForeignKey(to=Apartment, related_name='reservations',
on_delete=models.Cascade)
start_date = models.DateField()
end_date = models.DateField()
要检索公寓的所有预订,您只需使用apartment.reservations
,因为我们已经在ForeignKey字段中定义了related_name
。
您甚至可以通过执行Reservations.objects.filter(apartment=apartment, start_date__gte=<your_start_date>, end_date__gte<your_end_date>)
来过滤特定日期