Я пытаюсь сделать эту работу в Джанго. Если я делаю print (a_list.query) Запрос не показывает никаких ошибок, когда я запускаю это в оболочке: print (filter.qs.query) или print (a_list.query), но когда я делаю print (filter.qs)или напечатайте (a_list), тогда я получаю эту ошибку:
('42S22', "[42S22] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid column name 'ARecordID'. (207) (SQLExecDirectW); [42S22] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180)")
Вышеуказанная ошибка возникает в строке {% for obj in filter.qs %}
в файле template.html. Когда я использую ARecordID в необработанном SQL-запросе, это работает, но я не хочу работать с необработанными запросами, поскольку хочу использовать django_filters. Вот что у меня есть (изменили имена полей и названия моделей, чтобы упростить (относительно)):
models.py:
class modelA(models.Model):
arecordid = models.IntegerField(db_column='ARecordID', primary_key=True) # Field name made lowercase.
name = models.CharField(..)
..
class modelB(models.Model):
a = models.ForeignKey('modelA', db_column='ARecordID', on_delete=models.CASCADE, db_constraint=False)
number = modelsIntegerField(..)
..
views.py:
a_list = modelB.objects.select_related('a').filter(number=5).values('a__arecordid', 'a__name', 'number', 'phone')
filter = aFilter(request.GET, queryset = a_list)
return render(request, "template.html", {'filter': filter})
template.html:
{% block content %}
<form method="get">
{{ filter.form.as_p }}
<button type="submit">Search</button>
</form>
<table>
{% for obj in filter.qs %}
<tr>
<td>{{ obj.number }}</td>
<td>{{ obj.a.name }}</td>
</tr>
{% endfor %}
</table>
{% endblock %}
Версия Django: 2.1.13 Python: 3.8
Любая помощь приветствуется!