Как сделать так, чтобы на поле 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
, иначе экземпляр пользователя никогда не будет создан.