У меня было 2 таблицы Пользователи и Электронные письма . Я успешно реализовал отношение один-ко-многим, когда пользователи могут создавать собственные электронные письма, и они могут получать и отображать только свои собственные электронные письма, которые они создали. Однако теперь я хочу иметь набор электронных писем по умолчанию, который будет доступен всем, но не будет редактироваться или удаляться.
В моем приложении есть функция, в которой по очереди отправляются 3 разных письма. Таким образом, чтобы пользователи сразу начали использовать функцию, у них есть возможность использовать электронные письма по умолчанию. Мои пользователи и адреса электронной почты определены следующим образом.
class User(UserMixin, db.Model):
user_id= db.Column(db.Integer, primary_key=True)
user_name= db.Column(db.String(200), nullable=False, unique=True)
data_required = db.Column(db.Integer)
further_queries = db.Column(db.Integer)
second_email= db.Column(db.Integer)
reminder_email = db.Column(db.Integer)
custom = db.relationship('Custom', backref='author', lazy='dynamic')
assist = db.relationship('Assists', backref='creator', lazy='dynamic')
def __repr__(self):
return '<User {}>'.format(self.user_name)
class Custom (db.Model):
__table_args__ = (
db.UniqueConstraint('user_id', 'email_name', name='unique_email'),
)
email_id = db.Column(db.Integer, primary_key=True)
user_id= db.Column(db.Integer, db.ForeignKey('User.user_id'), nullable=False)
email_name = db.Column(db.String(64), index=True, nullable=False)
body = db.Column(db.String(200), index=True, nullable=False)
def __repr__(self):
return '<User {}>'.format(self.email_name)
Поскольку я не могу ввести адреса электронной почты по умолчанию в таблицу «Настраиваемые» адреса электронной почты и установить внешний ключ для всех пользователей, я создал отдельную таблицу для Электронные письма по умолчанию.
class DefaultEmails (db.Model):
email_id = db.Column(db.Integer, default=0)
email_name = db.Column(db.String(64), primary_key=True, index=True, nullable=False)
body = db.Column(db.String(200), index=True, nullable=False)
def __repr__(self):
return '<User {}>'.format(self.email_name)
В настоящее время я установил для email_id писем по умолчанию значение 0, чтобы использовать logi c сервера для получения почты по умолчанию с использованием email_name, если email_id = 0. Так, когда функция запускается отправляя электронные письма, он увидит, что email_id равен 0, и выберет использование email_name, основываясь на другом факторе. Кажется, это очень хакерский способ делать вещи даже для меня.
Мой вопрос: есть ли способ сделать это лучше? Я хочу, чтобы пользователи могли выбирать как стандартные, так и пользовательские электронные письма. Было бы намного лучше, если бы можно было хранить электронные письма по умолчанию и пользовательские сообщения в одной таблице.
PS: я следую *1018* 1021 * учебному пособию Мигеля Гринберга для этого