Последние 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
- это необработанная форма, прикрепленная ниже
- Как я могу добавить список полей выбора в список клиентов и продуктов?
- Как правильно добавить (SALE_TYPE_CHOICES)?
- Как мне добавить их в 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>
...