Создать переменную типа выбора SQLAlchemy_utils из данных в базе данных - PullRequest
0 голосов
/ 08 мая 2020

Я использую Flask_WTF / WTForms с SQLAlchemy, подключенным к mySQL БД. Используя SQLAlchemy, я использую ChoiceType для определения раскрывающегося списка в форме. При определении этого параметра как переменной в определении модели все работает отлично, однако я хочу сохранить данные выбора в базе данных, чтобы их можно было настроить через приложение позже (т.е. при необходимости добавляются дополнительные параметры).

Я могу легко определить список требуемых кортежей с помощью запроса к базе данных таблицы, в которой хранятся данные выбора, однако, когда я пытаюсь запустить это из класса Model для установки переменной, я получаю сообщение об ошибке:

sqlalchemy.exc.InvalidRequestError: When initializing mapper mapped class User->users, expression 'PersonRatings' failed to locate a name ('PersonRatings'). If this is a class name, consider adding this relationship() to the <class 'memberapp.Models.User'> class after both dependent classes have been defined.

Конфигурация модели выглядит следующим образом:

class PersonRatings(db.Model):
    __tablename__ = 'person_ratings'

    RATING_TYPES = []
    _RATING_TYPES = RatingTypes.query.all()
    for rating in _RATING_TYPES:
        RATING_TYPES.append((rating.rating_code, rating.rating_description))

    user_id = db.Column(db.Integer, db.ForeignKey(User.id), primary_key=True)
    rating_id = db.Column(db.Integer, info={'choices': RATING_TYPES}, primary_key=True)
    rating_expiry = db.Column(db.Date)

    def __repr__(self):
        return f'<Ratings: {self.user_id}, {self.rating_id}'

Есть ли способ передать данные базы данных в переменную выбора?

...