Как сделать так, чтобы на поле Foreignkey всегда ссылались в модели Django?

Я думал создать экземпляр поля foreignkey и ссылаться на него каждый раз, когда создается экземпляр модели, но не нашел никакого решения для этого. Обычно нам нужно создать модель типа foreignkey и затем ссылаться на нее из модели, но я хочу, чтобы она автоматически создавала один экземпляр foreignkey с самого начала и всегда ссылалась на него.

Для примера предположим, что у нас есть 2 поля модели User и WeeklySchedule. Каждый раз, когда создается экземпляр User, также создается соответствующий экземпляр модели WeeklySchedule, на который будет ссылаться экземпляр User.

Что-то вроде следующего:

weekly_schedule = WeeklySchedule()
# Set your weekly_schedule  fields here
weekly_schedule.save()

user = User()
# Set your user fields here
user.weekly_schedule = weekly_schedule 
user.save()

Мы можем сделать это внутри метода save() модели User.

def save(self, *args, **kwargs):
    schedule = create_and_or_get_new_weekly_schedule()
    """ where create_and_or_get_new_weekly_schedule either creates a new 
      instance or gets that of the foreignkey model 
    """
    self.availability_schedule_tutor = schedule
    super().save(*args, **kwargs)

Мы также можем установить опцию on_delete для поля foreignkey в models.PROTECT или models.RESTRICT, чтобы убедиться, что оно никогда не потеряет ссылку. Также не забудьте установить null=True, иначе экземпляр пользователя никогда не будет создан.

Вернуться на верх