Несколько переменных для хранения в столбце базы данных Flask - PullRequest
0 голосов
/ 24 января 2019

Я работаю над приложением для транспортной компании и на странице клиента мы можем добавить тур доставки, и эти туры доставки можно запланировать на разные дни и часы:

пример:

Тур по доставке запланирован на понедельник в 16:00 и в четверг, 10:00.

В настоящее время я храню его в своей базе данных SQLAlchemy Delivery Tour в формате JSON, например:

{'Monday': 10,'Четверг': 16}

Но дело в том, что когда я рендерил HTML-файл, у меня не получается выполнить итерацию по JSON-файлу, и у меня есть правильные день и час, связанные с правильным туром доставки ...

enter image description here

Итак, мне было интересно, есть ли более эффективный способ сделать это?Как, может быть, создать новую таблицу, но я не знаю, как расположить столбцы.

РЕДАКТИРОВАТЬ

Мой HTML:

<div class="card">
            <div class="card-header-spe"> 
                <p style="text-align:left;">
                    Delivery Tour
                    <span style="float:right;">
                        <a class=" card-category btn btn-primary" href="{{ url_for('deliver', client_id=client.id )}}">Add New</a>
                    </span>
                </p>
            </div>
            <table class="table table-striped table-hover">
                <thead>
                    <tr>
                    <th scope="col">Title</th>
                    <th scope="col">Description</th>
                    <th scope="col">Schedule</th>
                    <th scope="col">Driver</th>
                    </tr>
                </thead>

                <tbody>

                    <tr>   
                        {% for deliv in delivery %}
                            <th scope="row">{{ deliv.title }}</th>
                            <td>{{ deliv.description }}</td>
                            <td >{{ deliv.schedule }} </td>
                            {% if deliv.driver_assigned %}
                                {% for d in driver %}
                                    {% if d.id == deliv.driver_assigned %}
                                    <td>{{d.first_name}}</td>
                                    {% endif %}
                                {% endfor %}
                            {% else %}
                                <td></td>
                            {% endif %}
                    </tr>
                        {% endfor %}


                </tbody>
            </table>
        </div>

И вотфотография моей базы доставки: enter image description here

1 Ответ

0 голосов
/ 24 января 2019

У вас уже есть основы:

{% for day, hour in eval(deliv.schedule).items() %}

Вы должны выполнить eval, потому что, если я не ошибаюсь, этот столбец хранится в виде строки в таблице.

Если бы это был я, я бы создал таблицу только для расписаний и установил бы отношение «один ко многим» с вашей таблицей delivery_tour: (примечание: опустите столбец schedule на вашемтаблица delivery_tour)

class TourSchedule(Base):
    __tablename__ = 'tour_schedules'
    id = Column(Integer, primary_key=True)
    tour_id = Column(Integer, ForeignKey('delivery_tour.id'))
    tour = relationship('DeliveryTour', backref='schedule')
    day = Column(String(16))
    hour = Column(Integer)

Тогда вы можете просто выполнить итерацию по нему, как в противном случае:

<td>
    <ul style="list-style-type: none;">
        {% for sched in deliv.schedule %}
            <li>{{sched.day}}: {{sched.hour}}</li>
        {% endfor %}
    </ul>
</td>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...