Anonymous
Как исправить AttributeError: объект «кортеж» не имеет атрибута «элементы» при создании нового пользователя
Сообщение
Anonymous » 27 ноя 2024, 08:33
У меня есть несколько классов и их отношения вот так
Код: Выделить всё
class Account(db.Model, UserMixin):
id = Column(Integer, primary_key=True)
user_name = Column(db.String(50), nullable=False, unique=True)
password = Column(String(50), nullable=False)
create_day = Column(Date, default=date.today)
active = Column(Boolean, default=True)
user = relationship("User", backref="account", uselist=False) # Thiết lập quan hệ 1-1
def __str__(self):
return self.user_name
class User(db.Model):
id = Column(Integer, primary_key=True)
last_name = Column(String(50), nullable=False)
first_name = Column(String(50), nullable=False)
gender = Column(String(50))
birth_day = Column(Date)
email = Column(String(50), unique=True, nullable=False)
image = Column(String(255), nullable=True)
phone_numbers = relationship('PhoneNumber',backref='user', lazy=True)
account_id = Column(Integer, ForeignKey('account.id', ondelete='CASCADE'), nullable=False, unique=True)
role = Column(String(50), nullable=False, default="user")
__mapper_args__ = {
'polymorphic_identity': 'user',
'polymorphic_on': role
}
class Doctor(User):
id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), primary_key=True)
specialty = Column(String(100), nullable=True)
degree = Column(String(100), nullable=True)
experience = Column(String(100),nullable=True)
current_workplace = Column(String(100),nullable=True)
exam_dates = relationship('ExamSchedule', backref='doctor', lazy=True)
__mapper_args__ = {
'polymorphic_identity': 'doctor',
}
class Nurse(User):
id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), primary_key=True)
__mapper_args__ = {
'polymorphic_identity': 'nurse',
}
class Patient(User):
id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), primary_key=True)
insurance_number = Column(String(50), unique=True, nullable=True)
__mapper_args__ = {
'polymorphic_identity': 'patient',
}
class Admin(User):
id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), primary_key=True)
__mapper_args__ = {
'polymorphic_identity': 'admin',
}
class PhoneNumber(db.Model):
id = Column(Integer, primary_key=True)
number = Column(String(15), nullable=False, unique = True)
type_number = Column(String(50), nullable=False ,default="personal")
# user_id = Column(Integer, ForeignKey('user.id'), nullable=False)
user_id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), nullable=False)
это мой файл admin.py:
Код: Выделить всё
from flask_admin import Admin
from flask_admin.contrib.sqla import ModelView
from app.models import User, PhoneNumber
from app.extensions import db
def init_admin(app):
admin = Admin(app, name="Admin Panel", template_mode="bootstrap4")
admin.add_view(ModelView(User, db.session))
admin.add_view(ModelView(PhoneNumber, db.session))
init .py:
Код: Выделить всё
from flask import Flask
from config import Config
from app.admin import init_admin
from config import Config
from app.extensions import db,migrate, login_manager
from app.models import *
def create_app():
app = Flask(__name__)
app.config.from_object(Config)
db.init_app(app)
migrate.init_app(app, db)
login_manager.init_app(app)
init_admin(app)
Config.init_cloudinary()
return app
requirements.txt:
Код: Выделить всё
alembic==1.14.0
blinker==1.8.2
certifi==2024.8.30
click==8.1.7
cloudinary==1.41.0
colorama==0.4.6
Flask==3.0.3
Flask-Admin==1.6.1
Flask-Login==0.6.3
Flask-Migrate==4.0.7
Flask-SQLAlchemy==3.1.1
Flask-WTF==1.2.2
greenlet==3.1.1
itsdangerous==2.2.0
Jinja2==3.1.4
Mako==1.3.6
MarkupSafe==3.0.2
PyMySQL==1.1.1
python-dotenv==1.0.1
six==1.16.0
SQLAlchemy==2.0.36
typing_extensions==4.12.2
urllib3==2.2.3
Werkzeug==3.1.2
WTForms==3.2.1
Почему поле «Номера телефонов» не отображается, когда я перехожу на страницу администратора/пользователя?
и когда я нажимаю кнопку «Создать» или «Изменить», оно отображается эта ошибка:
AttributeError: объект «кортеж» не имеет атрибута «элементы»
как исправить ошибку?
Подробнее здесь:
https://stackoverflow.com/questions/792 ... n-create-n
1732685580
Anonymous
У меня есть несколько классов и их отношения вот так [code]class Account(db.Model, UserMixin): id = Column(Integer, primary_key=True) user_name = Column(db.String(50), nullable=False, unique=True) password = Column(String(50), nullable=False) create_day = Column(Date, default=date.today) active = Column(Boolean, default=True) user = relationship("User", backref="account", uselist=False) # Thiết lập quan hệ 1-1 def __str__(self): return self.user_name class User(db.Model): id = Column(Integer, primary_key=True) last_name = Column(String(50), nullable=False) first_name = Column(String(50), nullable=False) gender = Column(String(50)) birth_day = Column(Date) email = Column(String(50), unique=True, nullable=False) image = Column(String(255), nullable=True) phone_numbers = relationship('PhoneNumber',backref='user', lazy=True) account_id = Column(Integer, ForeignKey('account.id', ondelete='CASCADE'), nullable=False, unique=True) role = Column(String(50), nullable=False, default="user") __mapper_args__ = { 'polymorphic_identity': 'user', 'polymorphic_on': role } class Doctor(User): id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), primary_key=True) specialty = Column(String(100), nullable=True) degree = Column(String(100), nullable=True) experience = Column(String(100),nullable=True) current_workplace = Column(String(100),nullable=True) exam_dates = relationship('ExamSchedule', backref='doctor', lazy=True) __mapper_args__ = { 'polymorphic_identity': 'doctor', } class Nurse(User): id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), primary_key=True) __mapper_args__ = { 'polymorphic_identity': 'nurse', } class Patient(User): id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), primary_key=True) insurance_number = Column(String(50), unique=True, nullable=True) __mapper_args__ = { 'polymorphic_identity': 'patient', } class Admin(User): id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), primary_key=True) __mapper_args__ = { 'polymorphic_identity': 'admin', } class PhoneNumber(db.Model): id = Column(Integer, primary_key=True) number = Column(String(15), nullable=False, unique = True) type_number = Column(String(50), nullable=False ,default="personal") # user_id = Column(Integer, ForeignKey('user.id'), nullable=False) user_id = Column(Integer, ForeignKey('user.id', ondelete='CASCADE'), nullable=False) [/code] это мой файл admin.py: [code]from flask_admin import Admin from flask_admin.contrib.sqla import ModelView from app.models import User, PhoneNumber from app.extensions import db def init_admin(app): admin = Admin(app, name="Admin Panel", template_mode="bootstrap4") admin.add_view(ModelView(User, db.session)) admin.add_view(ModelView(PhoneNumber, db.session)) [/code] [b]init[/b].py: [code]from flask import Flask from config import Config from app.admin import init_admin from config import Config from app.extensions import db,migrate, login_manager from app.models import * def create_app(): app = Flask(__name__) app.config.from_object(Config) db.init_app(app) migrate.init_app(app, db) login_manager.init_app(app) init_admin(app) Config.init_cloudinary() return app [/code] requirements.txt: [code]alembic==1.14.0 blinker==1.8.2 certifi==2024.8.30 click==8.1.7 cloudinary==1.41.0 colorama==0.4.6 Flask==3.0.3 Flask-Admin==1.6.1 Flask-Login==0.6.3 Flask-Migrate==4.0.7 Flask-SQLAlchemy==3.1.1 Flask-WTF==1.2.2 greenlet==3.1.1 itsdangerous==2.2.0 Jinja2==3.1.4 Mako==1.3.6 MarkupSafe==3.0.2 PyMySQL==1.1.1 python-dotenv==1.0.1 six==1.16.0 SQLAlchemy==2.0.36 typing_extensions==4.12.2 urllib3==2.2.3 Werkzeug==3.1.2 WTForms==3.2.1 [/code] Почему поле «Номера телефонов» не отображается, когда я перехожу на страницу администратора/пользователя? и когда я нажимаю кнопку «Создать» или «Изменить», оно отображается эта ошибка: [b]AttributeError: объект «кортеж» не имеет атрибута «элементы»[/b] как исправить ошибку? Подробнее здесь: [url]https://stackoverflow.com/questions/79228859/how-to-fix-attributeerror-tuple-object-has-no-attribute-items-when-create-n[/url]