Django admin - Разрешить инлайн-переходы после выбора элемента

Я пытаюсь заполнить выпадающий список в панели администратора Django на основе выбранного элемента.

У меня есть модель клиента

class Customer(BaseModel):
name = models.CharField(max_length=128)
company = models.ForeignKey("Company", models.PROTECT)


def __str__(self) -> str:
    return f"{self.name}"

def save(self, **kwargs):
    return super().save(**kwargs)

Модель приглашения

class Invite(BaseModel):
full_name = models.CharField(max_length=128, blank=True)
email = WIEmailField(unique=True)
customer = models.ForeignKey(
    to="Customer",
    on_delete=models.PROTECT,
    related_name="invites",
)

Модель приглашения клиента, определяющая приглашение и клиента

class CustomerLocationInvite(BaseModel):
location = models.ForeignKey(
    to=Location
)
invite = models.ForeignKey(
    to=Invite,
    blank=True,
)

Записаться на приглашение

class CustomerInviteInline(admin.TabularInline):
model = CustomerLocationInvite
fields = ("invite", "location", "created_at", "modified_at")
readonly_fields = ("created_at", "modified_at")
extra = 0

При создании нового приглашения можно ли:

  1. Display the inline once a company has been selected?
  2. When selecting a location from the inline, Filter out the locations based on the company they selected?
  1. Я предполагаю, что вы хотите получить местоположение из CustomerLocationInvite, а из местоположения получить компанию? Если это так, то, возможно, вы можете попробовать
CustomerLocationInvite.objects.filter(location__id=locationid)

Где идентификатор местоположения может быть получен

locationid = Location.objects.filter(company__id=companyid).id

Но поскольку вы сказали, что компания уже выбрана, у вас должен быть ее ID - это значение, которым вы замените companyid. Затем вы можете получить встроенного администратора из объекта CustomerLocationInvite, который вы получили в первой строке.

SO ссылка Ссылка на документ

  1. Я не совсем понимаю, что вы имеете в виду. Вы получаете список компаний или список местоположений? Учитывая это, пожалуйста, вставьте также вашу модель Company.
Вернуться на верх