Django Rest Framework - SearchFilter
Мне нужно попытаться заставить SearchFilter работать для полей внутри набора внутри другого набора.
class Fight(models.Model):
event = models.ForeignKey(Event, on_delete=models.CASCADE, related_name="fights")
class FighterStats(models.Model):
fight = models.ForeignKey(Fight, on_delete=models.CASCADE, related_name="fighters")
fighter = models.ForeignKey(Fighter, on_delete=models.CASCADE, null=True)
class EventSearchFilter(filters.SearchFilter):
def get_search_fields(self, view, request):
field_names = {
"name": "name",
"venue": "location__venue",
"fighters": "fights__fighters__fighter__first_name__name"
}
У меня нет проблем с тем, чтобы заставить работать внешние ключи, но мне бы пригодилась помощь с внешними наборами. Я удалил несвязанные поля/код из приведенного выше текста.
Оказалось, что я правильно ссылался на поля, проблема была в том, что все мои поля истребителя были нулевыми, что было вызвано этой строкой.
fighter_obj = Fighter.objects.filter(fighter_url=fighter_url).first()
Исправлено путем изменения fighter_url на нижний регистр перед фильтрацией. Урок усвоен: фильтр чувствителен к регистру.