Уведомления

Группа в Telegram: @pythonsu

#1 Май 9, 2015 19:15:35

boligolov
От: СПб
Зарегистрирован: 2014-10-03
Сообщения: 51
Репутация: +  1  -
Профиль   Отправить e-mail  

Flask, SQLAlchemy, 2 таблицы. Что не так?

Не получается связать 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):
return “<Status %r>” % (self.status_name)

Прикреплённый файлы:
attachment Screenshot_2.png (18,6 KБ)

Офлайн

#2 Май 9, 2015 20:36:34

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Flask, SQLAlchemy, 2 таблицы. Что не так?

boligolov
'dynamic' возвращает обьект Query, а к нему уже применяется all, filter, и тд., или можно использовать получение елемента списка по индексу , что тоже выполнит запрос

Офлайн

#3 Май 12, 2015 20:52:16

boligolov
От: СПб
Зарегистрирован: 2014-10-03
Сообщения: 51
Репутация: +  1  -
Профиль   Отправить e-mail  

Flask, SQLAlchemy, 2 таблицы. Что не так?

А не подскажите, во вьюхе я получаю поле из 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)
view.py
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)

Офлайн

#4 Май 12, 2015 20:57:34

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Flask, SQLAlchemy, 2 таблицы. Что не так?

Что это вообще такое?

class ItemTable(Table):
    id = Col('Id')
    ser = Col('Серийный номер')
    starus_id = Col ("Статус пакета")

Офлайн

#5 Май 13, 2015 08:04:01

boligolov
От: СПб
Зарегистрирован: 2014-10-03
Сообщения: 51
Репутация: +  1  -
Профиль   Отправить e-mail  

Flask, SQLAlchemy, 2 таблицы. Что не так?

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)

Офлайн

#6 Май 13, 2015 10:15:19

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Flask, SQLAlchemy, 2 таблицы. Что не так?

boligolov
а почему это за пределами вьюхи?

items = Serials.query.all()
table1 = ItemTable(items)
и кажется Вам нужно это

Офлайн

#7 Май 13, 2015 10:30:07

boligolov
От: СПб
Зарегистрирован: 2014-10-03
Сообщения: 51
Репутация: +  1  -
Профиль   Отправить e-mail  

Flask, SQLAlchemy, 2 таблицы. Что не так?

sander
boligolovа почему это за пределами вьюхи?
не весь views.py отправил, так он там находится.

Офлайн

#8 Май 13, 2015 12:36:53

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Flask, SQLAlchemy, 2 таблицы. Что не так?

boligolov
за пределами

@app.route("/table2")
def table2():
    .....

Офлайн

#9 Май 13, 2015 14:01:57

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Flask, SQLAlchemy, 2 таблицы. Что не так?

boligolov
Это от библиотеки flask-table.
Это уже даже не смешно.

Офлайн

#10 Май 14, 2015 10:21:24

boligolov
От: СПб
Зарегистрирован: 2014-10-03
Сообщения: 51
Репутация: +  1  -
Профиль   Отправить e-mail  

Flask, SQLAlchemy, 2 таблицы. Что не так?

Подучил матчасть и пошло как надо:

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)

temp1.html
{% 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 %}

Прикреплённый файлы:
attachment Screenshot_1.png (19,7 KБ)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version