tags = db.Table("tags",
db.Column("img_id", db.Integer, db.ForeignKey("bimg.id")),
db.Column("tag_id", db.Integer, db.ForeignKey("tag.id")),
)
class Bimg(db.Model):
id = db.Column(db.Integer(), primary_key=True)
lib = db.Column(db.String(500))
name = db.Column(db.String(500), nullable=True)
webp = db.Column(db.String(500), nullable=True)
date = db.Column(db.DateTime, default=datetime.utcnow)
tags = db.relationship("Tag", secondary=tags, backref="posts")
def __repr__(self):
return "<Bimg %r>" % self.id
class Tag(db.Model):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(5000), nullable=True)
def __repr__(self):
return "<Tag %r>" % self.name
#Загрузка файлов и получение тегов
@application.route("/upload", methods=["POST", "GET"])
def upload():
if request.method == "POST":
f = request.files["file"]
tag = request.form["tags"].split(",")
c= "static/images/rz/"
f.save(f"{c}" + f.filename)
name = f.filename.split(".")[0]
sa = Image.open(f"{c}" + f.filename)
sa.save(f"{c}m/{name}.webp")
webp = name + ".webp"
save_db = Bimg(name=f.filename, lib=c, webp=webp)
for i in tag:
tags = Tag(name = i)
save_db.tags.append(tags)
db.session.add(save_db)
db.session.commit()
return render_template("/upload.html")
else:
return render_template("/upload.html")
tags = Tag(name = i)
class Tag(db.Model):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(5000), unique=True, nullable=True)
...
tag = Tag.query.filter_by(name=i).first() # у вас tags почему-то, хотя это один тег
if not tag: # если в БД нет тега, то создаём
tag = Tag(name=i) # создаём новый тег, если его не нашлось в БД
save_db.tags.append(tag) # добавляем тег к изображению существующий или только что созданный
...