Предположим, у меня есть следующая простая модель:
class Dimdate(models.Model):
id = models.AutoField(db_column='Id', primary_key=True) # Field name made lowercase.
date = models.DateField(db_column='date') # Field name made lowercase.
Эта таблица используется многими другими моделями (поэтому Dimdate.id - FK), как показано ниже:
class MyModel(models.Model):
id = models.AutoField(db_column='Id', primary_key=True) # Field name made lowercase.
dateid = models.ForeignKey(Dimdate, models.DO_NOTHING, db_column='DateId', blank=True, null=True) # Field name made lowercase.
# ...
My Проблема в том, что таблица DimDate содержит слишком много записей. При использовании Django пользовательского интерфейса администратора для добавления нового экземпляра MyModel
в раскрывающемся меню отображаются все мои DimDate, что делает его не удобным для пользователя.
Я сделал быстрый поиск в Google, но не нашел ничего, что могло бы ограничить количество элементов DimDate, извлеченных и отображенных в раскрывающемся меню (при добавлении экземпляра MyModel). Могу ли я отфильтровать свою дату, чтобы включить только даты от 1 месяца в прошлом до 1 месяца в будущем?
Например: если мы 27 января 2020 года. Диапазон дат: [27/12/2019 , 27/02/2020]
В настоящее время я использую подход администратора "classi c" django (без пользовательской формы):
@admin.register(models.MyModel)
class MyModelAdmin(admin.ModelAdmin):
Я подозреваю, что мне понадобится переопределить форму MyModel. Но даже делая это. Как я могу ограничить количество извлеченных DimDate внутри моей формы?
Есть ли более простой способ сделать (как я новичок с Django ...)?
В случае, если это необходимо, я использую Django 2.2.6