Как да се справим с влизането и регистрацията с потребителско име?

Опитах се да променя стила на влизане по подразбиране към влизане, базирано на потребителско име. За това в db.py написах:

from gluon.tools import Auth, Crud, Service, PluginManager, prettydate
auth = Auth(db)
crud, service, plugins = Crud(db), Service(), PluginManager()
auth.define_tables(username=True, signature=False, migrate=False)
auth_table=auth.settings.table_user
auth_table.username.requires = IS_NOT_IN_DB(db, auth_table.username)

Когато се опитвам да се регистрирам за нов потребител, ми дава следната грешка:

<class 'sqlite3.OperationalError'> no such column: auth_user.username

Бих искал да знам как да се справя правилно с това. Освен това би било наистина полезно да имате добро обяснение за това как работи излагането и адресирането на тези таблици. Много съм нов в това и го намирам за наистина объркващо.


person Subhamoy S.    schedule 15.01.2013    source източник


Отговори (1)


Ако първоначално сте създали таблиците Auth без потребителското име, тогава няма да има поле „username“ в таблицата auth_user. Тъй като имате auth.define_tables(..., migrate=False), DAL няма да изпълни миграцията за добавяне на новото поле. Така че, опитайте временно да промените migrate на True, така че полето да бъде добавено.

person Anthony    schedule 15.01.2013
comment
Благодаря ти! Това го реши! Имах грешна представа за мигрирането, изглежда. Мислех, че е зададено на false, ако искам да използвам отново едни и същи таблици на база данни за различни приложения. Не разбрах как това трябва да повлияе на промяната на първичния ключ от имейл адрес на потребителско име. - person Subhamoy S.; 15.01.2013