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
Вернуться на верх