@Bjornie
Изучаю Python

Как в ModelAdmin сделать запрос из одной модели в другую?

Есть 2 модели:
class Person:
  name = models.CharField()
  surname = models.CharField()
  some_id = models.CharField()

class Player:
  person = models.ForeignKey(Person)
  some_field = models.CharField()
В админке, на странице записей для Player я хочу осуществить поиск по Person (по любому из указанных полей). Нашел в документации, что для этого есть метод get_search_results, но работает он только для своей модели.

Вот пример кода из админки (слегка измененный), который я хочу настроить на поиск по другой модели, а не по себе (self.model).
class PlayerAdmin(admin.ModelAdmin):
    def get_search_results(self, request, queryset, search_term):
        queryset, use_distinct = super(PlayerAdmin, self).get_search_results(request, queryset, search_term)
        try:
            print(search_term)
        except ValueError:
            pass
        else:
            queryset |= Person.objects.filter(some_id=search_term) # здесь указал другую модель
        return queryset, use_distinct

На что я получаю: Cannot combine queries on two different base models.
Подскажите, как это делается? С ООП пока не очень силен. Заранее спасибо!
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы