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
При создании нового приглашения можно ли:
- Display the inline once a company has been selected?
- When selecting a location from the inline, Filter out the locations based on the company they selected?
- Я предполагаю, что вы хотите получить местоположение из
CustomerLocationInvite, а из местоположения получить компанию? Если это так, то, возможно, вы можете попробовать
CustomerLocationInvite.objects.filter(location__id=locationid)
Где идентификатор местоположения может быть получен
locationid = Location.objects.filter(company__id=companyid).id
Но поскольку вы сказали, что компания уже выбрана, у вас должен быть ее ID - это значение, которым вы замените companyid. Затем вы можете получить встроенного администратора из объекта CustomerLocationInvite, который вы получили в первой строке.
- Я не совсем понимаю, что вы имеете в виду. Вы получаете список компаний или список местоположений? Учитывая это, пожалуйста, вставьте также вашу модель
Company.