Обратный поиск в django соединенных таблицах не работает - PullRequest
0 голосов
/ 05 августа 2020

Я только что создал следующую модель:

class A(models.Model):
    name = models.CharField(max_length=150)
    slug = models.SlugField(max_length=200)
    
    class Meta:
         db_table = "ax"


class B(models.Model):
    name = models.CharField(max_length=150)
    slug = models.SlugField(max_length=200)
 
    class Meta:
         db_table = "bx"


class Z(models.Model):
    a = models.ForeignKey(A, on_delete=models.CASCADE)
    b = models.ForeignKey(B, on_delete=models.CASCADE)


    class Meta:
         db_table = "zx"

Я хочу получить список A.name s, когда B.slug == input_str. То, что я пробовал в view.py до сих пор:

def myView(request, input_str):
    context = {
        'inputs_list': A.objects.filter(bx__slug__startswith=input_str).select_related('ax').select_related('bx').values('name')
        }
    return render(request, 'app/my_template.html', context)

Это возвращает ошибку:

Невозможно разрешить ключевое слово 'bx' в поле. Возможные варианты: zx, id, name, slug ...

Мой вопрос:

Каков правильный поиск для возврата A.name if B.slug= input_str. Или, лучше сказать, как фильтровать A на основе столбца в B? ?

A.objects.filter(bx__slug__startswith=input_str).select_related('ax').select_related('bx').values('name')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...