Django admin - значение по умолчанию в поле через выбор фильтра
Я пытаюсь сделать значение по умолчанию в моей таблице через выборку в админке django. Например, у меня есть 2 таблицы:
model.py
class Year (models.Model):
year = models.IntegerField(primary_key=True, verbose_name='Year')
def __str__(self):
return str(self.year)
class RFCSTForm (models.Model):
id = models.AutoField(primary_key=True)
year = models.ForeignKey(Year, verbose_name='Year', null=True, blank=True, on_delete=models.CASCADE)
Тогда, когда я хочу создать новую RFCSTForm и выбрать через фильтры года значение "2022", я хочу, чтобы поле year было заполнено по умолчанию этим значением.
возможно ли это в модели django?
Не совсем понимаю, что вы хотите сделать.
Если вы хотите установить значение по умолчанию для 2022 в модели, вы можете использовать вызываемый элемент в поле по умолчанию, например:
year = models.ForeignKey(Year, verbose_name='Year', null=True, blank=True, on_delete=models.CASCADE, default=self.get_year_2022)
Затем определите вызываемую функцию по умолчанию:
def get_year_2022(self):
return Year.objects.get(year=2022)
Но если вы хотите выбрать значение по умолчанию в поле в админке, что-то вроде этого может сделать работу :
class RFCSTFormAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
form = super(RFCSTFormAdmin, self).get_form(request, obj, **kwargs)
default_year = Year.objects.get(year=2022)
form.base_fields['year'].initial = default_year.id
return form