Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何实现满足这些需求的模型_Django - Fatal编程技术网

Django 如何实现满足这些需求的模型

Django 如何实现满足这些需求的模型,django,Django,假设我有以下模型: Class Classroom(models.Model): name = CharField(max_length=128) 最初,我希望这个教室在一年中的每个周末(周六和周日)都有人使用。然后,一个人可以来占用/租用教室一天。例如,傅先生认为它是可用的,并希望在9月27日星期六占据它。实现此逻辑的解决方案(或最佳解决方案)是什么 方法是什么?我应该创建另一个表吗?我应该添加什么类型的字段 非常感谢 也许像这样的方法可以奏效: class Appointment(

假设我有以下模型:

Class Classroom(models.Model):
    name = CharField(max_length=128)
最初,我希望这个
教室在一年中的每个周末(周六和周日)都有人使用。然后,一个人可以来占用/租用
教室
一天。例如,傅先生认为它是可用的,并希望在9月27日星期六占据它。实现此逻辑的解决方案(或最佳解决方案)是什么

方法是什么?我应该创建另一个表吗?我应该添加什么类型的字段


非常感谢

也许像这样的方法可以奏效:

class Appointment(models.Model):
    day = models.DateField()
    available = models.BooleanField(default=True)
    classroom = models.ManyToManyField(Classroom, related_name='appointments')
编辑:

可用性应该放在教室和约会之间的中间表中,ManyToManyField应该有<代码>通过= TabLeNAME<代码>,其中表名是该表的名称。< /P> 编辑:

其实我想吃晚饭,但现在这个问题比我的胃口更重要:)


我认为,如果你有很多教室,很多天都可以使用的话,这样的方法应该可以奏效。通过
available
字段,您可以查看或设置可用性。如果教室被预订了,比如说在下周六,那么它的值应该设置为
False
。这应该是基本框架,您可以根据需要扩展模型。

因此,使用M2M字段,我必须用一年中的所有周末来填充约会(一年52周,因此我的约会中约有104个条目)。我说得对吗?这是你的第一个解决方案…现在我在看第二个。第二次编辑后的模型很重要。这应该行得通。您可以使用所有周六和周日填充WeekenDay,还可以使用带有选项(“周六”、“周日”)的ChoiceField扩展模型,因此它比只包含日期更方便用户。在中间的表格中,您将结合预约(课堂+周末)。太好了。有价值的信息。也与这里的内容相似:
class Classroom(models.Model):
    name = CharField(max_length=128)

class WeekendDay(models.MOdel): # this was before Appointment
    day = models.DateField()
    classroom = models.ManyToManyField(Classroom, through="Appointment")

class Appointment(models.Model)
    available = models.BooleanField(default=True)
    weekend_day = models.ForeignKey(WeekendDay, related_name='appointments_per_day')
    classroom = models.ForeignKey(Classroom, related_name='appointments_per_classroom')