Как установить значение по умолчанию для ForeignKey

У меня есть это поле

graduation_year = m.ForeignKey('GraduationYear', on_delete=m.SET_NULL, null=False,blank=False)

и GraduationYear класс is.

class GraduationYear(BaseModel):
    label = m.CharField(max_length=255)
    year = m.CharField(max_length=255,unique=True)
    def __str__(self):
        return self.label

Теперь я хочу установить объект GraduationYear, где year=2022, в качестве значения по умолчанию graduation_year

Итак, я предполагаю, что мне нужно вставить sql сюда ниже.

graduation_year = m.ForeignKey('GraduationYear', on_delete=m.SET_NULL, null=False,blank=False,default='select GraduationYear where year=2022')

Возможно ли это?

default=lambda: GraduationYear.objects.get_or_create(year=2022)[0]

Если ваша таблица управляется только с помощью ORM, хорошим подходом будет переопределение метода __init__ на модели, чтобы установить его, если он не предоставлен:

class GraduationYear(BaseModel):
    label = m.CharField(max_length=255)
    year = m.CharField(max_length=255,unique=True)
    def __str__(self):
        return self.label


class GraduationDetails(BaseModel):
    graduation_year = m.ForeignKey('GraduationYear', on_delete=m.SET_NULL, null=False, blank=False)

    def save(self, *args, **kwargs):
        if not self.graduation_year:
            self.graudation_year, _ = GraduationYear.objects.get_or_create(year=2022)
        return super().save(*args, **kwargs)
Вернуться на верх