Нужна помощь с python flask.
У меня есть класс таблицы
class Products(db.Model):
__tablename__ = "products"
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(80), nullable = False)
description = db.Column(db.Text, nullable = False)
price = db.Column(db.Integer, nullable = False)
type = db.Column(db.Integer, nullable = False)
photo_1 = db.Column(db.String(100), nullable = False)
photo_2 = db.Column(db.String(100), nullable = True, default = None)
photo_3 = db.Column(db.String(100), nullable = True, default = None)
photo_4 = db.Column(db.String(100), nullable = True, default = None)
photo_5 = db.Column(db.String(100), nullable = True, default = None)
date = db.Column(db.Date, default = datetime.datetime.utcnow())
def __init__(self, name, description, type, price, photo_1):
self.name = name
self.description = description
self.price = price
self.type = type
self.photo_1 = photo_1
В нём есть 5 полей с фотографиями, но только одно обязательно для заполнения. Мне нужно, что бы для одного товара было максимум 5 фото. Пользователь может выбрать любое количество фото от 1 до 5. Во время добавления нового товара мне нужно узнать, сколько фотографий решил добавить пользователь.
Я написал такой код.
Добавление товаров в БД в нём ещё не написано.
@app.route("/admin/add-product", methods = ["POST", "GET"])
def add_product():
if request.method == "POST":
name = request.form["product_name"]
price = request.form["product_price"]
description = request.form["product_description"]
files = request.files.getlist("product_photos")
type = request.form["product_type"]
description = description.replace("\n", "<br>")
photos = []
for file in files:
if file and allowed_file(file.filename):
lastRow = UsersPhotos.query.order_by(UsersPhotos.id.desc()).first()
nameParts = file.filename.rsplit(".", 1)
fileName = file.filename
if lastRow != None:
fileName = f"photo_{lastRow.id + 1}.png"
else:
fileName = f"photo_1.png"
userPhoto_object = UsersPhotos(name = fileName, path = app.config['UPLOAD_FOLDER'] + fileName)
db.session.add(userPhoto_object)
db.session.commit()
file.save(os.path.join(app.config["UPLOAD_FOLDER"], fileName))
photos.append(fileName)
else:
flash("Неверное расширение какого-то из файлов")
return redirect(request.url)
return render_template("admin/add_product.html")
1. В списке photos, как я написал ранее, может быть от 1 до 5 элементов. Есть другой вариант, кроме как проверять наличие индекса в списке и после этого уже делать вывод, что элемент есть (или нет) и добавлять его в бд?
2. Класс таблицы Products написан верно, или можно как то написать более по умному?