Как сохранить данные, введенные в режиме начальной загрузки, в другую модель

#python #django #django-models #django-forms #bootstrap-modal

#питон #джанго #django-модели #django-формы #bootstrap-модальный

Вопрос:

Я пытаюсь создать веб-приложение на основе django, соответствующее требованиям к загрузке, которое принимает «Детали загрузки» в модели под названием ShipperBoardModel, где люди (производители) сообщают, что они хотят, чтобы определенные товары были доставлены куда-либо, и другие люди (называемые перевозчиками), которые делают ставки на эти сообщения, что они могут выполнить эту работу по выбранной ими цене.

ShipperBoardModel

 class ShipperBoardModel(models.Model):
  From = models.CharField(max_length=100,null=True)
  To = models.CharField(max_length=100,null=True)
  Type = models.CharField(max_length=100,null=True)
  Length = models.CharField(max_length=100,null=True)
  Weight = models.CharField(max_length=100,null=True)
  Numberoftrucks = models.IntegerField(null=True)
  MaterialType = models.CharField(null=True,max_length=100)
  Loadingtime = models.DateTimeField(null=True)

def _str_(self):
    return self.Origin
  

Я создал первую таблицу ‘loads’, в которой многие люди разместили свои загрузки, и это отображается на странице «/ loads /», где показаны все активные загрузки, доступные для торгов.

введите описание изображения здесь

Я добавил кнопку «Сделать ставку сейчас» рядом с каждой строкой, нажатие на которую открывает форму, которая запрашивает перевозчиков, какую цену они готовы предложить за эту конкретную нагрузку / задачу.

Нажав «Сделать ставку сейчас», мы получаем предварительно заполненную форму в режиме начальной загрузки относительно строки, в которой она находится. Затем отправитель вводит свою заявку на эту задачу / загрузку, которую я хочу сохранить в другую модель под названием ‘SupplierBidModel’.

Я просто хочу выяснить, как сохранить эту цену предложения в этой модели вместе с идентификатором BidID и transporterID, которые уже есть у каждого транспортера при регистрации.

Вот форма, за которой следует модель:

введите описание изображения здесь

 class SupplierBidModel(models.Model):
    BidID = models.AutoField(primary_key=True)
    Load_ID = models.OneToOneField(ShipperBoardModel,on_delete=models.CASCADE)
    Supplier_ID = models.OneToOneField(SupplierBoardModel,on_delete=models.CASCADE)
    Bid_amount = models.IntegerField(null=True)
  

У меня есть некоторые данные, сохраненные в моем models.py и, используя эту модель, я визуализирую таблицу. Теперь для каждой строки я хочу, чтобы пользователь вводил одну запись, которая должна сохранять эти данные в другой модели.

Вот шаблон :

 {% block content %}
    <table>
        {% for item in data %}

            <tr>
                <th>From</th>
                <th>To</th>
                <th>Weight</th>
                <th>Length</th>
                <th>Type</th>
                <th>Material Type</th>
                <th>Number of Trucks</th>
                <th>Loading Time</th>
            </tr>
            <tr>
                <td>{{ item.From }}</td>
                <td>{{ item.To }}</td>
                <td>{{ item.Weight }}</td>
                <td>{{ item.Length }}</td>
                <td>{{ item.Type }}</td>
                <td>{{ item.MaterialType }}</td>
                <td>{{ item.Numberoftrucks }}</td>
                <td>{{ item.Loadingtime }}</td>
                <td>
                    <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal{{ item.id }}">Bid
                        now! for id {{ item.id }} </button>
                </td>
                {#        {% endfor %}#}


                <div class="modal fade" id="myModal{{ item.id }}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
                    <div class="modal-dialog" role="document">
                        <div class="modal-content">
                            <div class="modal-header">
                                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
                                        aria-hidden="true">amp;times;</span></button>
                                <h4 class="modal-title" id="myModalLabel">Modal title</h4>
                            </div>
                            <div class="modal-body">

                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.To }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.From }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.Weight }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.Length }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.Type }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.MaterialType }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.Numberoftrucks }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here..." value="{{ item.Loadingtime }}" disabled>
                                <input class="form-control" id="disabledInput" type="text"
                                       placeholder="Disabled input here...">Bid
                            </div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                <button type="button" class="btn btn-primary">Save changes</button>
                            </div>

                        </div>
                    </div>
                </div>

            </tr>
        {% endfor %}
    </table>

{% endblock %}
  

Я пока не знаю, как отобразить форму на странице в django, где уже существует форма. Единственный известный мне способ визуализации формы — это использование urls.py способ :

 urlpatterns = [
    url(r'supplier', views.supplierboardfun, name='supplierboard'),
    url(r'shipper', views.shipperboardfun, name='shipperboard'),
    url(r'loads', views.suppliertablefun, name='supplierboardtable')
]
  

которая вызывает функцию suppliertablefun()

 def suppliertablefun(request):                     # function to display shipperboardmodel
    data = ShipperBoardModel.objects.all()
    return render(request, 'supplierboard/board.html', locals())
  

Вероятно, я упускаю из виду, как визуализировать несколько форм с разными моделями в django, или как сохранить данные из поля ввода и сохранить их в понравившейся мне модели вместе с некоторой относительной информацией.

Комментарии:

1. вы должны добавить форму в свой модальный файл и поместить в него все входные данные, а также создать представление, которое будет обрабатывать данные.

Ответ №1:

Я понял это. Я смог сделать это таким образом

 def suppliertablefun(request):                     # function to display shipperboardmodel
    data = ShipperBoardModel.objects.all()

    if request.method == 'POST':
        forminput = BiddingForm(request.POST)
        if forminput.is_valid():
            forminput.save()

    forminput = BiddingForm(request.POST)
    return render(request, 'supplierboard/board.html', locals(),{'forminput': forminput})