Форум сайта python.su
1
Не получается связать status_id с serials_id.
Выдает “ SELECT status.id AS status_id, status.status_name AS status_status_name, status.serial_id AS status_serial_id FROM status WHERE :param_1 = status.serial_id”
class Serials(db.Model): id = db.Column(db.Integer, primary_key=True) serial = db.Column(db.String(30)) packet_id = db.Column(db.String(39)) date_cr = db.Column(db.String(22)) # Packet create date_pk= db.Column(db.String(22)) # Packet packing date_sd = db.Column(db.String(22)) # Packet start dru date_fd= db.Column(db.String(22)) # Packet finish dry status_id = db.relationship("Status", backref ="sernick", lazy = 'dynamic') dry_id = db.Column(db.String(30)) def __init__(self, serial): self.serial = serial def __repr__(self): return "<Serials(serial='%s'>" % (self.serial) class Status(db.Model): id = db.Column(db.Integer, primary_key=True) status_name = db.Column(db.String(20)) serial_id = db.Column(db.Integer, db.ForeignKey('serials.id')) def __init__(self, status_name): self.status_name = status_name def __repr__(self):
Прикреплённый файлы:
Screenshot_2.png (18,6 KБ)
Офлайн
53
boligolov
'dynamic' возвращает обьект Query, а к нему уже применяется all, filter, и тд., или можно использовать получение елемента списка по индексу , что тоже выполнит запрос
Офлайн
1
А не подскажите, во вьюхе я получаю поле из Serials - id, ser и starus_id, которое соответствует полю id в Status. Могу ли через query получить id, serials и Status.name соответствующую starus_id?
models.py
class Serials(db.Model): id = db.Column(db.Integer, primary_key=True) ser = db.Column(db.String(30)) starus_id = db.Column(db.Integer, db.ForeignKey("status.id")) def __repr__(self): return '<Serials %r>' % (self.ser) class Status(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(10)) ser_id = db.relationship("Serials", backref = 'status') def __repr__(self): return '<Status %r>' % (self.name)
class ItemTable(Table): id = Col('Id') ser = Col('Серийный номер') starus_id = Col ("Статус пакета") items = Serials.query.all() table1 = ItemTable(items) z = items[1].status.name table1 = @app.route("/table2") def table2(): return render_template ("table.html", table = table1)
Офлайн
39
Что это вообще такое?
class ItemTable(Table): id = Col('Id') ser = Col('Серийный номер') starus_id = Col ("Статус пакета")
Офлайн
1
4kpt_IIIЭто от библиотеки flask-table.
Что это вообще такое?
from flask_table import Table, Col class ItemTable(Table): id = Col('Id') ser = Col('Серийный номер') starus_id = Col ("Статус пакета") items = Serials.query.all() table1 = ItemTable(items)
Офлайн
53
boligolov
а почему это за пределами вьюхи?
items = Serials.query.all() table1 = ItemTable(items)
Офлайн
1
sanderне весь views.py отправил, так он там находится.
boligolovа почему это за пределами вьюхи?
Офлайн
53
boligolov
за пределами
@app.route("/table2") def table2(): .....
Офлайн
39
boligolovЭто уже даже не смешно.
Это от библиотеки flask-table.
Офлайн
1
Подучил матчасть и пошло как надо:
view.py
@app.route("/") @app.route('/index') def index(): l = ["1", "2", "3"] q = Serials.query.order_by(Serials.id).all() return render_template('temp1.html', title = "Учет пиломатериалов", menu = l, serials =q)
{% extends "base.html" %}
{% block title %}{{title}}{% endblock title %}
{% block head %}
{{ super() }}
<style type="text/css">
.important { color: #336699; }
</style>
{% endblock %}
{% block content %}
<h1>Меню</h1>
<p class="important">Учет пиломатериалов</p>
<ul>
{% for i in menu %}
<li>{{i}}</li>
{% endfor %}
</ul>
<div id="main" class="container">
<h2>Все позиции</h2>
<table class="table table-hover">
<tr>
<th>#
<th>Серийный номер
<th>Статус
<th>Пакет
<th>Доска
<th>Бревно
<th>Номер сушилки
<th>Место в камере
<th>Дата
{%- for item in serials %}
<tr class={{ "success" if item.done }}>
<td><a href="/packets/{{ item.id }}">{{ item.id }}</a>
<td>{{ item.status.name }} </td>
<td>{{ item.packet.wh }} x {{ item.packet.ht}} </td>
<td>{{ item.packet.boards.ht}} x {{ item.packet.boards.wh}}</td>
<td><center>{{ item.packet.boards.timber.diam}} </center></td>
<td>{{ item.dry.num }}</td>
<td><center>{{ item.dry.place.place}}<center></td>
{%- endfor %}
</table>
</div>
{% endblock %}
Прикреплённый файлы:
Screenshot_1.png (19,7 KБ)
Офлайн