У меня есть модель User, которая должна содержать список модели Message.
Этот список (в модели Usesr) должен содержать 20 объектов Message, которые будут обновляться каждые 24 часа.
Как я могу реализовать эту архитектуру в моих модельных классах?
Я думаю о 2 решениях,
Сначала нужно сохранить атрибут списка в модели пользователя:
class User (db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable = False)
def __init__ (self,name):
self.name = name
self.tempList = []
def appendTempList (self, item):
self.tempList.append (item)
def removeTempListItems (self):
self.tempList = []
class Message:
id = db.Column(db.Integer, primary_key=True)
context = db.Column(db.String(200), nullable = False)
def __init__(self,msg):
self.context = msg
#some codes to add 20 random items into tempList of each User, every 24 hours
Это хороший подход? Могу ли я сохранить список внутри класса модели в качестве атрибута?!
Мой второй подход заключается в использовании отношения «многие ко многим» между этими моделями:
user_message_table = db.Table ('user_message_table',
db.Column('user_id', db.Integer, db.ForeignKey('message_model.id')),
db.Column('message_id', db.Integer, db.ForeignKey('user_model.id'))
)
class User (db.Model):
__tablename__ = 'user_model'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable = False)
tempList = db.relationship("Message", secondary = user_message_table)
def __init__ (self,name):
self.name = name
def appendTempList (self, item):
self.tempList.append (item)
db.session.commit()
def removeTempListItems (self):
self.tempList.remove()
#remove item from user_message_table too
class Message:
__tablename__ = 'message_model'
id = db.Column(db.Integer, primary_key=True)
context = db.Column(db.String(200), nullable = False)
def __init__(self,msg):
self.context = msg
Есть идеи?