Django Admin - фильтрация встроенных опций по 3-й модели? - PullRequest
1 голос
/ 27 апреля 2020

Вариант использования:

Существует 3 модели:

  1. Пользователь
  2. Отдел
  3. Офис

Отношения:

  • Офис всегда подключен к одному отделу.

  • Пользователь может быть членом различных отделов и работать для различных офисов.

Я хочу создать встроенную страницу для моей административной страницы пользователя в поле Office. Однако я хотел бы заполнить встроенные параметры ведомствами, которые принадлежат только тем подразделениям, в которые входит пользователь.

Код:

class User(models.Model):
    username = models.CharField(max_length=100)

class Division(models.Model):
    name = models.CharField(max_length=100)
    users = models.ManyToManyField(User)


class Office(models.Model):
    name = models.CharField(max_length=100)
    division = models.ForeignKey(Division, on_delete=models.CASCADE, null=True, blank=True)

class OfficeAdminForm(forms.ModelForm):
  # I assume I should change it here, but I don't know how to filter accordingly.
  office = forms.ModelChoiceField(queryset=Office.objects.all(), empty_label="(Nothing)")

class OfficeInline(admin.TabularInline):
  model = Office
  form = OfficeAdminForm

class UserAdmin(admin.ModelAdmin):
  inlines = [OfficeInline]

admin.site.register(Item, ItemAdmin)
admin.site.register(Category)
...