作为任务的一部分,我创建了一个“公寓列表”网站。 我设法做到了,但是现在我需要为此建立一个“预订系统”。
基本思想是,登录用户可以从列出的公寓中选择一个公寓,选择一个“开始日期”和“结束日期”(如果尚未预订该公寓),然后预订该公寓。
我是Django的新手,并且需要一些指针才能开始执行此任务。
我有一个Apartment模型,其中包含所有我要用来通过模板打印所有内容的Apartments信息。
我正在使用提供的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
非常感谢您!
答案 0 :(得分:0)
您对创建Reservation对象的假设将是正确的。 您需要将这些预订链接到相关公寓。 Django通过其ForeignKey和ManyToManyField支持这种关系。
这些字段支持链接one-to-one, one-to-many, and many-to-many relationships。
在您的情况下,一个公寓可以有多个预订,这意味着您需要在预订中有一个字段指向一个公寓,这可以使用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>)