У меня есть объект 'Registration', который пользователи могут создавать на внешнем интерфейсе без проблем.
Это выглядит так:
class Registration(models.Model):
person = models.ForeignKey(Person, on_delete=models.PROTECT)
course_detail = models.ForeignKey(CourseDetail, on_delete=models.PROTECT)
camp_shirt = models.ForeignKey(CampShirt, on_delete=models.PROTECT)
comments = models.CharField(max_length=200, blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return "%s" % (self.course_detail.course.camp)
Когда я нахожусь вАдминистратор и нажмите на определенную регистрацию - загрузка займет некоторое время, потому что существуют тысячи и тысячи объектов Person.
Для простоты использования - никогда не будет времени, когда нам нужно будет отредактировать "персона"'связан с данной регистрацией, поэтому я хотел бы, чтобы при редактировании от администратора django в раскрывающемся списке' персона 'отображался только выбранный пользователь в наборе запросов персонажа.
Поэтому, когда я перехожу на http://myapp.com/admin/registration/23/change
, я хочуформа для отображения только выбранного в данный момент человека в качестве единственного параметра в раскрывающемся списке.
Моя модель администратора выглядит следующим образом:
class RegistrationAdmin(admin.ModelAdmin):
list_display = ("person", "course_detail")
class Meta:
# I think this is what I do in order to override the default admin form? Not sure.
form = RegistrationAdminForm
Моя регистрацияAdminForm выглядит следующим образом:
class RegistrationAdminForm(forms.ModelForm):
# course_detail, person, camp_shirt, comments
person = forms.ModelChoiceField(queryset=Person.objects.filter(
id=registration.person.id)
)
def __init__(self, registration, *args, **kwargs):
super(RegistrationAdminForm, self).__init__(*args, **kwargs)
self.fields['person'].queryset = Person.objects.filter(
id=registration.person.id
)
class Meta:
model = Registration
fields = '__all__'
Основной вопрос : Как изменить форму администратора, чтобы возвращался определенный набор запросов для одного из полей в администраторе django?