как получить единицу и цену из выпадающего списка - PullRequest
0 голосов
/ 07 апреля 2020

привет Я новичок в Django Я создаю приложение заказа. В новой форме заказа я хочу получить цену и единицу измерения из таблицы продуктов. Когда я выбираю продукт из выпадающего списка, он получает цену и единицу измерения из выбранной таблицы продуктов. product.here мой мой код

model.py

class Product(models.Model):
product_name = models.CharField(max_length=200)
unit = models.TextField()
price = models.IntegerField()
active = models.IntegerField(default='1')

def __str__(self):
    return  self.product_name


class Order(models.Model):
name = models.CharField(max_length=200)
delivery_date = models.DateField(blank=True)
product_id = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.IntegerField()
unit = models.CharField(max_length=50)
price = models.IntegerField()
amount = models.IntegerField()

view.py

def new(request):
if request.POST:
    form = OrderForm(request.POST)
    if form.is_valid():
        if form.save():
            return redirect('/', messages.success(request, 'Order was successfully created.', 'alert-success'))
        else:
            return redirect('/', messages.error(request, 'Data is not saved', 'alert-danger'))
    else:
        return redirect('/', messages.error(request, 'Form is not valid', 'alert-danger'))
else:
    form = OrderForm()
    return render(request, 'new.html', {'form': form})

form.py

class OrderForm(ModelForm):
product_id = forms.ModelChoiceField(queryset=Product.objects.filter(active='1'), empty_label='')
delivery_date = forms.DateField(required=True)
quantity = forms.IntegerField(initial=1)
price = forms.IntegerField(initial=0)

class Meta:
    model = Order
    fields = ['name', 'delivery_date', 'product_id', 'unit', 'quantity', 'price', 'amount']


class ProductForm(ModelForm):
class Meta:
    model = Product
    fields = ['product_name', 'unit', 'price']

новый . html

    <form class="form" role="form" action="" method="post"> {% csrf_token %}
                                        <div class="row">
                                            <div class="col-sm-6">
                                                <header>Customer Info</header>
                                                <div class="form-group floating-label">
                                                    {{ form.name | add_class:'form-control' }}
                                                    <label for="regular2">Customer Name</label>
                                                </div>
                                                <div class="form-group floating-label">
                                                    {{ form.product_id | add_class:'form-control select2-list' | attr:'id:product_id'}}
                                                    <label for="textarea2">Product ID</label>
                                                </div>
                                                            <div class="form-group floating-label">
                                                            {{ form.quantity | add_class:'form-control'}}
                                                            <label for="regular2">Quantity</label>
                                                        </div>
                                            </div>
                                            <div class="col-sm-6">
                                                <header >Order Info</header>
                                                <div class="form-group">
                                                    {{ form.delivery_date | add_class:'form-control' | attr:'type:date'}}
                                                    <label for="regular2">Delivery Date</label>
                                                </div>
                                                <div class="row">
                                                        <div class="col-sm-6">
                                                        <div class="form-group floating-label">
                                                            {{ form.unit | add_class:'form-control'}}
                                                            <label for="regular2">Unit</label>
                                                        </div>
                                                    </div>
                                                    <div class="col-sm-6">
                                                        <div class="form-group floating-label">
                                                            {{ form.price | add_class:'form-control'}}
                                                            <label for="regular2">Price</label>
                                                        </div>
                                                    </div>
                                                    </div>
                                                <div class="col-sm-6">
                                                        <div class="form-group floating-label">
                                                            {{ form.amount| add_class:'form-control' }}
                                                            <label for="regular2">Amount </label>
                                                        </div>
                                                    </div>
                                            </div>
                                            <div class="col-md-12">
                                                <hr>
                                                <div class="card-actionbar-row">
                                                    <input type="submit" class="btn btn-flat btn-primary ink-reaction" value="SUBMIT">
                                                </div>
                                            </div>
                                        </div>
                                    </form>

enter image description here

Мне нужна помощь в получении цены за единицу, выбрав название ингредиента в раскрывающемся списке

...