SQLAlchemy UNIQUE ограничение не удалось на отношения многие ко многим - PullRequest
0 голосов
/ 20 марта 2020

Когда я создаю пользователя с классом User, например

User(username='xxx',password='xxxx', role =[Role(name='Admin'),])

База данных также добавит в таблицу ролей строку с именем Admin.

Проблема это когда я создаю другого пользователя с ролью Администратор, и он выдаст ошибку. УНИКАЛЬНОЕ ограничение не удалось: role.name. Как я могу предотвратить это?

Вот мой код:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///user.db'

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer(),primary_key = True)
    username = db.Column(db.String(20),unique = True, nullable = False)
    password = db.Column(db.String(50),unique = False, nullable = False)
    role = db.relationship('Role',secondary = 'userroles', backref = db.backref('user',lazy = 'dynamic'))

class Role(db.Model):
    __tablename__ = 'roles'
    role_id = db.Column(db.Integer(),primary_key = True)
    name = db.Column(db.String(20), unique = True)

class UserRole(db.Model):
    __tablename__ = 'userroles'
    id = db.Column(db.Integer(), primary_key = True)
    user_id = db.Column(db.Integer(),db.ForeignKey('users.id', ondelete='CASCADE'))
    role_id = db.Column(db.Integer(),db.ForeignKey('roles.role_id', ondelete='CASCADE'))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...