Есть ли способ добавить список в класс модели django?

Я начинающий django и пытаюсь сделать проект с нуля. Мои модели :

class Citizen(models.Model):
    name = models.CharField(max_length=64, unique=False)
    citizen_id = models.CharField(max_length=10, unique=True)

    def __str__(self):
        return '{} by {}'.format(self.name, self.citizen_id)


class Manager(models.Model):
    name = models.CharField(max_length=64, unique=False)
    manager_id = models.CharField(max_length=10, unique=True)

    def __str__(self):
        return '{} by {}'.format(self.name, self.manager_id)


class Message(models.Model):
    sender = models.ForeignKey(Citizen, Manager, on_delete=models.CASCADE, related_name='sender')
    receiver = models.ForeignKey(Citizen, Manager, on_delete=models.CASCADE, related_name='receiver')
    message = models.CharField(max_length=1200)
    timestamp = models.DateTimeField(auto_now_add=True)
    is_read = models.BooleanField(default=False)

    def __str__(self):
        return self.message

    class Meta:
        ordering = ('timestamp',)


class Centre(models.Model):
    pass

В Центре будет один менеджер, а потом много граждан. Что я должен сделать здесь? Должен ли я добавить список граждан? Возможно ли это?

Я думаю, что чтение этого может помочь.

Но, по сути, вы хотите реализовать так называемое отношение "один (центр) - много (граждан)". Короче говоря, ваш гражданин может иметь Foreign Key, называемый centre_id, который будет идентификатором центра, к которому он принадлежит. Затем вы можете использовать идентификатор центра для запроса списка граждан, или если вы хотите получить центр и присоединить к нему список его граждан, то вы можете сделать то, что называется join

Вы можете реализовать это двумя различными способами:

<
class Citizen(models.Model):
    ...
    centre = models.ForeignKey(Centre, null=True, blank=True, on_delete=models.SET_NULL)
  1. Если в каждом центре только один менеджер, вы можете использовать поле OneToOneField, чтобы гарантировать, что менеджеров не будет несколько. Оно работает иначе, чем отношения "многие к одному", поскольку является полностью двусторонним, например, manager.centre и centre.manager.
class Manager(models.Model):
    ...
    centre = models.OneToOneField(Centre, ...
Вернуться на верх