@domanskiy

Как сделать динамическую таблицу HTML и передать её значения через пост в Flask?

Есть две связанные ОТМ таблицы БД.
Суть в том, что к номеру заказа привязываются таблицы с файлами.
Сами таблицы (фреймы) записаны в одной таб.БД 'frames', где каждая строка привязана к номеру заказа по id заказа и к номеру фрейма заказа через frame_num.
Дело осложняется тем, что количество строк в каждом фрейме неограничено 1+N, количество самих фреймов в заказе также не ограничено 1+N
Вроде понятно описал, но могу нарисовать.

Как такое организовать в шаблоне, с настройкой (добавить фрейм(таблицу), добавить строку в фрейме)?

models.py
class Frame(db.Model):
    """Модель таблицы файлов"""
    __tablename__ = 'frames'

    id = db.Column(db.Integer, primary_key=True)
    digital_orders_id = db.Column(db.Integer)
    frame_num = db.Column(db.SMALLINT)
    row_num = db.Column(db.SMALLINT)
    url_file = db.Column(db.String(255))

    def __init__(self, *args, **kwargs):
        super(Frame, self).__init__(*args, **kwargs)

    def __repr__(self):
        return f'< {self.id} {self.frame_num} от {self.digital_orders_id}>'


class DigitalOrder(db.Model):
    """Модель таблицы заказа"""
    __tablename__ = 'digital_orders'

    id = db.Column(db.Integer, primary_key=True)
    order = db.Column(db.String(140), nullable=False)
 
    frames_id = db.Column(db.Integer, db.ForeignKey('frames.id'), nullable=False)
    frames = db.relationship("Frame", backref=db.backref('digital_orders'))
    """id фреймов из таблицы frames"""

    def __repr__(self):
        return f'<{self.id} {self.order}>'


forms.py
from flask_wtf import Form
from wtforms.ext.sqlalchemy.fields import *

from wtforms import *
from models import *

class DigitalOrderForm(Form):
    order = StringField('Номер з-за')
    frames = IntegerField('Фреймы')


blueprint.py
from flask import Blueprint, session
from flask import render_template

from models import *
from .forms import DigitalOrderForm
from flask import request
from app import db
from flask import redirect
from flask import url_for
from models import slugify
from flask_security import login_required
digitalorders = Blueprint('digitalorders', __name__, template_folder='templates')

@digitalorders.route('/create', methods=['POST', 'GET'])
@login_required
def create_digitalorder():
    if request.method == 'POST':
        order = request.form['order']
        frames = request.form['frames']
        try:
            order = DigitalOrder(order=order, frames=frames)
            db.session.add(order)
            db.session.commit()
        except:
            print('Something wrong')

        return redirect(url_for('digitalorders.index.html'))

    form = DigitalOrderForm()
    return render_template('digitalorders/create.html', form=form)


Нашел модуль flask_table. Но он лет 5 не обновлялся.
  • Вопрос задан
  • 791 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы