Фильтр поля на основе арендатора в шаблоне администрирования Django по умолчанию
Добрый день,
даны 2 модели django:
class Person(TenantAwareModel):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
full_name = models.CharField(max_length=200)
personal_car= models.ForeignKey(Car, on_delete=models.SET_NULL , null=True, blank=True)
...
def __str__(self):
return self.full_name
class Car(TenantAwareModel):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
car_name = models.CharField(max_length=200)
...
def __str__(self):
return self.car_name
Я просто хочу, работая над шаблоном и формой в административном реестре, чтобы КОГДА я "собираюсь редактировать объект "Person", я мог выбрать из выпадающего списка "personal_car" только тот "Car", который принадлежит арендатору этого человека. Потому что при стандартной реализации арендатора я могу выбрать ALSO автомобиль, который принадлежит другому арендатору... и это неправильно.
Актуальные настройки ""admin.py"", я бы достиг этой цели только работая над этим файлом:
class PersonAdminForm(forms.ModelForm):
class Meta:
model = Person
fields = "__all__"
def __init__(self, *args, **kwargs):
super(PersonAdminForm, self).__init__(*args, **kwargs)
self.fields['personal_car'].queryset = Car.objects.filter() #this empty filter return all personal_car objects... also from other tenants.. can't filter here...
class PersonDedicatedTemplate(admin.ModelAdmin):
list_display = ('tenant','full_name','personal_car')
list_filter = ('tenant')
full_path=None
form=PersonAdminForm
super_admin_site.register(Person,PersonDedicatedTemplate)
спасибо!