Я только что создал следующую модель:
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')