Джанго модели для школьного расписания? - PullRequest
0 голосов
/ 14 октября 2018

Я создаю приложение школьного расписания для каждой комнаты?Есть мои модели.Есть ли что-то, чего мне не хватает?

class Building(models.Model):
      bid = models.CharField(max_length=10, primary_key=True)
      name = models.CharField(max_length=255, unique=True)

class Meta:
    ordering = ['bid']

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


class Room(models.Model):
      building = models.ForeignKey(Building, on_delete=models.CASCADE, 
      related_name='rooms')
      number = models.PositiveIntegerField()
      availability = models.BooleanField(default=False)
      power = models.BooleanField(default=False)

class Meta:
    ordering = ['building', 'number']
    unique_together = ['building', 'number']

def __str__(self):
    return f'{self.building.bid}/{self.number}'

class Occurrence(models.Model):
    date = models.DateField('Date')
    start_period = models.ForeignKey(Period, on_delete=models.CASCADE, related_name='start_at')
    end_period = models.ForeignKey(Period, on_delete=models.CASCADE, related_name='end_at')

    class Meta:
        abstract = True

class Period(models.Model):
    start = models.TimeField()
    end = models.TimeField()
    objects = PeriodManager()
    class Meta:
        ordering = ['start']

    def __str__(self):
        return f'{self.start}-{self.end}'

    def check_time(self):
        return True if self.start < self.end else False

    def check_overlap(self):
        pass


   class TimetableModel(models.Model):
        class Meta:
            abstract =True

Там будет название модели Booking, которое простирается от Происхождения, чтобы позволить студентам регистрироваться для использования комнаты в определенные периоды.Я хотел бы сделать ссылку на модель расписания на модель комнаты, чтобы обеспечить контекст для отображения расписания на разные недели для комнаты и моделей периодов, которые похожи на школьные периоды.Любые советы?

1 Ответ

0 голосов
/ 14 октября 2018

Я думаю, что вам, возможно, придется переосмыслить ваши реальные модели и то, что вы пытаетесь достичь

Взглянув на свои модели, вы, кажется, создали модели для различных аспектов того, что вы пытаетесь сделать, но между моделями, похоже, нет согласованности.

Например, одинЭто можно посмотреть следующим образом:

Building
- Name

Room
- Number 
- Building (FK)

Booking
- Room
- Period (you could just have statically defined list assume these are fixed)
- Duration (number of periods, this removes the need to specify end as you can calculate it.

Чтобы сделать заказ, вам необходимо знать следующее: - номер, который вы хотите забронировать - период, в который вы хотите его использовать - как долго вы 'Я хотел бы забронировать его (например, 2 периода)

С точки зрения данных, это, вероятно, самые простые модели, которые вы можете построить (простые всегда лучше).С точки зрения показа, что доступно, вы можете сделать это в точке, где вы делаете заказ (форма бронирования).

Надеюсь, это даст вам некоторое представление о том, как к этому подойти, я не создавал модели в этом ответе, так как думаю, что ваш вопрос на самом деле не технический, а скорее как точка в правильном направлении..

...