Как отфильтровать класс, с которым связана модель в отношении ManyToManyField в Django? - PullRequest
0 голосов
/ 05 апреля 2020

Я бы хотел отфильтровать класс Location, к которому относится модель House. Идея состоит в том, чтобы ограничить выбор Location на основе значения поля country в панели администратора. Возможно ли это, и если да, то как я могу это сделать?

class House(models.Model):
    country = models.ForeignKey(Country,
                                 on_delete=models.CASCADE,
                                 related_name='country'
                                 )
    city = models.ManyToManyField(
        Location,
        related_name='city'
    )

В принципе, я хотел бы что-то подобное, но Django выдает ошибку, говорящую django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

city = models.ManyToManyField(
    Location.objects.filter(country=country,
    related_name='city'
)

1 Ответ

1 голос
/ 05 апреля 2020
class HouseAdmin(admin.ModelAdmin):
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if db_field.name == "city":
             kwargs["queryset"] = Location.objects.filter(country=country)
        return super(HouseAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)

Источник Django Фильтр много ко многим в поле admin?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...