Django Forms - 'add_order' forms.form ChoiceField из таблицы базы данных - PullRequest
0 голосов
/ 20 июня 2020

Последние 3 дня я изо всех сил пытаюсь создать форму правильным способом в части отправки и проверки - моя цель - отправить подтвержденную форму заказа, манипулируя данными, добавляя заказ в база данных

Model.py иметь Orders (типичные заказы db) с: client, product и sold_by as ForeignKey

В form Я хочу отобразить все параметры client, product, and sold_by, а также параметры sale_type, которые я установлю на уровне модели как (SALE_TYPE_CHOICES)

add_order.html - это необработанная форма, прикрепленная ниже

  1. Как я могу добавить список полей выбора в список клиентов и продуктов?
  2. Как правильно добавить (SALE_TYPE_CHOICES)?
  3. Как мне добавить их в HTML?

Спасибо!

model.py

class Orders(models.Model):
  created_date = models.DateTimeField(auto_now_add=True)
  client_id = models.ForeignKey(Clients, on_delete=models.CASCADE, related_name='client')
  product_id = models.ForeignKey(Products, on_delete=models.CASCADE, related_name='product')
  sold_by = models.ForeignKey(Employees, on_delete=models.CASCADE, related_name='employee')
  sale_type = models.CharField(max_length=20, blank=True, null=True)
  ...

моя форма

class AddOrderForm(forms.Form):
  sold_by = forms.CharField(max_length=20)
  client_name = forms.CharField(max_length=20)
  sale_type = forms.CharField(max_length=20)
  product_name = forms.CharField(max_length=20)
  units_to_buy = forms.IntegerField()

views.py - начало:

def add_order_view(request):
    if request.method == 'POST':
        form = models.AddOrderForm(request.POST)
        if form.is_valid():
            client_name = request.POST.get('client_name')
            product_name = request.POST.get('product_name')
            sold_by = request.POST.get('sold_by')
            sale_type = request.POST.get('sale_type')
            units_to_buy = request.POST.get('units_to_buy')

add_order. html

....
     <form action="{% url 'adolim:add_order' %}" method="post">
                 <div class="row card">
                {% csrf_token %}
                <div class="row">    
                      <div class="input-field col s3 right">
                    <select class="browser-default" name="client_name">
                      <option disabled selected>client name</option>
                        {% for client in clients_list %}
                      <option value="{{ client }}">{{ client }}</option>
                        {% endfor %}
                    </select>
                </div>
                      ...
...