Фильтр поля на основе арендатора в шаблоне администрирования 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)

спасибо!

Вернуться на верх