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'