如何为这些需求实现模型

时间:2014-09-25 17:02:07

标签: django

说我有以下型号:

Class Classroom(models.Model):
    name = CharField(max_length=128)

最初,我希望这个Classroom可以在一年中的每个周末(周六和周日)都被占用。然后,一个人可以来{占用/租用classroom某一天。例如,Foo先生看到它可以使用,并希望在9月27日Satuday占据它。实现这种逻辑的解决方案(或最好的解决方案是什么?)

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

非常感谢!

1 个答案:

答案 0 :(得分:1)

也许这样的事情可行:

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

编辑:

可以将可用性放在Classroom和Appointment之间的中间表中,而ManyToManyField应该有through=tablename,其中tablename是该表的名称。

编辑:

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

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')

我认为这样的事情应该有用,如果你有很多教室,这些教室可以在很多天内使用。通过字段available,您可以查看或设置可用性。如果在下周六预订了教室,那么它的值应该设置为False。这应该是基本的骨架,您可以根据需要扩展模型。