Я в процессе установки тестовой установки моего текущего проекта Python / Django. Все отлично работает на моем dev-сервере, но недавно мы создали новую виртуальную машину для тестовых и возможных рабочих копий проекта. В качестве основных пакетов я использую Python, Django, SqlAlchemy (с бэкэндом MSSQL) и WTForms.
У меня проблема с тем, что мой тестовый сервер работает неправильно. Я лично не устанавливал и не устанавливал эти пакеты ни на одном из серверов (это было сделано кем-то, кто уже ушел), поэтому я не знаю всего обо всем этом, но я знаю, что на моем тестовом сервере я был У меня много проблем, которых у меня нет на сервере dev. Например, Django не разрешал методы должным образом, когда я использовал их в шаблонах (вместо возвращаемого значения он возвращал «связанный метод UserForm.action of ... и т. Д.»), И теперь он, кажется, вводит несколько типов в целые числа, когда они никогда не объявляются таковыми. Версии python, django, wtforms, sqlalchemy одинаковы на всех серверах. Вот пример кода, который отлично работает на сервере разработки, но не работает на тестовом сервере (вместе с сообщением об ошибке):
forms.py:
class NewPracticeForm(wtforms.Form):
Name = wtforms.TextField("Practice Name", [wtforms.validators.Required()])
OrgID = safields.QuerySelectField("Organization", pk_attr='OrgID')
action = '/Admin/H/newpractice/'
pulsedb.py (определение таблицы sqlalch):
#engine created here, can include that if necessary but its just a standard engine=create_engine() using pymssql
Base = declarative_base()
metadata = Base.metadata
class Practice(Base):
__tablename__ = 'Practice'
Name = Column(String(256) , nullable=False)
OrgID = Column(String(30) , ForeignKey('dbo.Orglist.OrgID') , nullable=False)
views.py:
def partNewPractice(request):
context = Context()
frm = forms.NewPracticeForm()
frm.OrgID.query = pwdb.session.query(pwdb.OrglistMap)
context['form'] = frm
#Return the response here using a method which just tacks a couple things on before returning a normal response
Итак, я выбираю организацию из поля выбора, которое публикует OrgID = Z55 (поскольку таблица OrgID использует строку из 3 символов в качестве столбца идентификатора), но где-то вдоль строки это вызывает проблему. Форма указывает на обработчик, который делает:
services.py
def HandlerAddPractice(request):
prac = pdb.Practice()
frm = forms.NewPracticeForm(request.POST, obj=prac)
frm.OrgID.query = pwdb.session.query(pwdb.OrglistMap)
И это далеко, потому что программа выдает ошибку:
invalid literal for int() with base 10: 'Z55'
Я обнаружил, что это также происходит в аналогичном поле с QuerySelectField, где он пытается по какой-то причине преобразовать UUID в целое число. Где-то есть настройки, которые мне не хватает? Я был в состоянии обойти метод метода, но это не то, что я могу игнорировать и обойти на этом этапе. Спасибо! Любой другой код / информация доступна по запросу. Кроме того, есть много других полей, но я оставил их в интересах краткости.