[Microsoft] [Драйвер ODBC 17 для SQL Server] [SQL Server] Неверное имя столбца 'ARecordID' Django - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь сделать эту работу в Джанго. Если я делаю 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

Любая помощь приветствуется!

...