Итак, я делаю «приложение по аренде», где у меня есть 3 класса в моем приложении Flask.
Ниже приведены классы, которые я реализовал:
User
(как самый верхний уровенькласс)
Cart
(у каждого пользователя есть корзина)
Rental
(у пользователя / корзины может быть «от 0 до много» прокатов)
cart_with_items = db.Table('cart_with_items',
db.Column('cart_id', db.Integer, db.ForeignKey('cart.id'), primary_key=True),
db.Column('rental_id', db.Integer, db.ForeignKey('rental.id'), primary_key=True)
)
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(15), unique=True)
email = db.Column(db.String(50), unique=True)
password = db.Column(db.String(80))
cart = db.relationship("Cart", backref='user', lazy=True, uselist=False)
class Cart(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
rentals = db.relationship('Rental', secondary=cart_with_items, lazy='subquery', backref=backref('carts', lazy=True))
@app.route("/dashboard/checkout", methods=['POST'])
def add_item(self,item):
try:
this.rentals.append(Rental(1,"2",3.5,"url"))
return '<h1> it worked</h1>'
except:
return '<h1>Didnt work</h1>'
class Rental(db.Model):
id = db.Column(db.Integer, primary_key=True)
item_name = db.Column(db.String(15), unique=True);
item_cost = db.Column(db.Float)
item_image_url = db.Column(db.String(100))
#foreign key is a primary key that refers to a key in another table
def __init__(self,item_id,item_name, item_cost, item_image_url):
self.id = item_id
self.item_name = item_name
self.item_cost = item_cost
self.item_image_url = item_image_url
def get_item_id():
return self.id
def getItemname():
return self.item_name
def getCost():
return self.item_cost
Затем я рендерим_темплату на странице 'панели инструментов' и передаю пользовательский объект, к которому затем будет создана корзина с композицией.
Я также передаю несколько арендуемых объектов в шаблонгде они будут перечислены, чтобы показать, что вы можете арендовать, вместе с кнопкой рядом с ними.
Кнопка - это то, с чем у меня проблемы.Я пытался реализовать функцию в классе Cart, чтобы добавить элемент в аренду, но это оказывается трудным ...
Я не знаю, смогу ли я сделать onClick()
в шаблонах jinja2но мне интересно, стоит ли мне просто использовать WTForms и пытаться публиковать нужные элементы обратно в функцию, отрисовывающую данный шаблон?
Прежде всего, мой вопрос состоит в том, является ли WTForms наиболее приемлемым, и должны ли WTForms бытьрешение моей проблемы?Я слишком запутался в своей реализации?