Django Filtering - Поле 'testcaseidstring' ожидало число, но получило 'tc123'

Я пытаюсь применить фильтр к модели Django на основе имени столбца

Этот столбец является внешним ключом

Код -

Inside models.py -

testcaseidstring = models.ForeignKey('Testcaseidstructure', models.DO_NOTHING, db_column='testCaseIdString')

Inside views.py -

sessid_qs=History.objects.using("otherdb").filter(testcaseidstring="tc123")

Это дает мне следующую ошибку ERROR - Поле 'testcaseidstring' ожидало число, но получило 'tc123'

Как я должен фильтровать по этому столбцу?

Любая помощь будет весьма признательна

Спасибо!!!

Полагаю, если вы хотите фильтровать по имени столбца, вам следует использовать testcaseidstring__name в filter, или как там называется ваше поле имени в Testcaseidstructure модели.

ForeignKey is - это число, pk модели Testcaseidstructure, поэтому, несмотря на то, что вы называете его testcaseidstring, это не строка, поэтому переименуйте его testcase. Если вы хотите фильтровать по строке, то можно сделать примерно следующее:

class History(models.Model):
    testcase = models.ForeignKey('Testcaseidstructure', models.DO_NOTHING, db_column='testCaseIdString')

Тогда

sessid_qs=History.objects.using("otherdb").filter(testcase__testcaseidstring="tc123")

Как предложил WeAreStarDust. Убедитесь, что здесь есть два подчеркивания, testcase__testcaseidstring='tc123'

Вернуться на верх