Как использовать атрибут модели в представлениях для другой модели?

В общем, у меня есть модель Product, у которой есть атрибут цены, как показано ниже.

class Product(models.Model):
    name = models.CharField(max_length=200, unique=True)
    description = models.TextField(max_length=500, blank=True)
    price = models.IntegerField()
    image = models.ImageField(upload_to = 'photos/products')
    stock = models.IntegerField()
    is_available = models.BooleanField(default=True)
    created_date = models.DateTimeField(auto_now_add=True)
    modified_date = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

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

class Main(models.Model):
    user = models.ForeignKey(Account, on_delete=models.SET_NULL, null=True)
    name = models.CharField(max_length=200, null=True)
    email = models.EmailField(max_length=200, null=True)
    phone = models.CharField(max_length=200, null=True)

    order_id = models.TextField()
    payment_id = models.TextField()
    amount = models.IntegerField()
    date = models.TextField(default='-')

    card_number = models.TextField(default="****")
    idpay_track_id = models.IntegerField(default=0000)
    bank_track_id = models.TextField(default=0000)

    status = models.IntegerField(default=0)

    def __str__(self):
        return str(self.name)

Теперь я хочу знать, как установить amount = price? Сейчас пользователь вводит сумму вручную из формы, но я хочу передать цену в эту функцию и затем установить ее в amount, а затем удалить ввод amount из HTML

def payment_start(request):
    if request.method == 'POST':
        order_id = uuid.uuid1()
        amount = request.POST.get('amount')
        name = request.POST.get('name')
        email = request.POST.get('mail')
        phone = request.POST.get('phone')

        payer = {
            'name': request.POST.get('name'),
            'phone': request.POST.get('phone'),
            'mail': request.POST.get('mail'),
            'desc': request.POST.get('desc'),
        }

        record = Main(order_id=order_id, amount=int(amount), name=name, email=email, phone=phone, user=request.user)
        record.save()

        idpay_payment = payment_init()
        result = idpay_payment.payment(str(order_id), amount, 'orders/payment/return', payer)

        if 'id' in result:
            record.status = 1
            record.payment_id = result['id']
            record.save()
            return redirect(result['link'])
        else:
            txt = result['message']
    else:
        txt = "Bad Request"
    return render(request, 'error.html', {'txt': txt})

Это HTML

<form action="{%url 'payment_start' %}" method="POST">
   {% csrf_token %}
   <input style="width: 100%;" type="number" name="amount" placeholder="Amount" required>
   <br/> <br/>
   <input style="width: 100%;" type="text" name="name" placeholder="Name" required>
   <br/> <br/>
   <input style="width: 100%;" type="text" name="phone" placeholder="Phone">
   <br/> <br/>
   <input style="width: 100%;" type="mail" name="mail" placeholder="MAil">
   <br/> <br/>
   <input style="width: 100%;" type="text" name="desc" placeholder="Description">
   <br/> <br/>
   <button style="width: 100%;"  type="submit" class="btn btn-primary">Start Payment</button>
</form>

Чтобы иметь возможность копировать атрибут цены Product в атрибут суммы Main, ваша форма должна передать id покупаемого продукта вместе с данными формы. Затем вы могли бы запросить модель в функции payment_start:

product_id = request.POST.get('product_id')
product = Product.objects.get(id=product_id)
record = Main(order_id=order_id, amount=product.price, name=name, email=email, phone=phone, user=request.user)
record.save()
Вернуться на верх