Я пытаюсь получить ОДИН идентификатор заказа для билетов, приобретенных пользователем. Когда я ставлю Order.objects.all()
, он показывает все идентификаторы заказа из базы данных, но я пытаюсь получить только один order ID
. Когда я вместо этого запрашиваю: Order.objects.filter(buyer=Ticket.objects.get(id='tic_id'))
----, это выдает мне ошибку:
недопустимый литерал для int () с основанием 10: 'tic_id'.
Может кто-нибудь проверить, верны ли мои модели и как запросить, чтобы получить только один order ID
, а не все order ID
s? Например, в настоящее время он показывает:
"Ваш номер заказа 123456789101112131415", и я нацеливаю его на отображение "номер заказа 11"; Спасибо, я ценю ваше терпение!
models.py
class User(models.Model):
first_name=models.CharField(max_length=100)
last_name=models.CharField(max_length=100)
email=models.CharField(max_length=100)
password=models.CharField(max_length=100)
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
class Ticket(models.Model):
venue=models.CharField(max_length=100)
quantity=models.PositiveIntegerField()
price=models.DecimalField(default=25.00, max_digits=5, decimal_places=2, null=True, blank=True)
loop=models.CharField(max_length=100)
purchaser = models.ForeignKey(User, related_name="purchases", on_delete=models.PROTECT)
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
class Order(models.Model):
full_name=models.CharField(max_length=100)
cc_number=models.PositiveIntegerField()
exp_date=models.PositiveIntegerField()
cvc=models.PositiveIntegerField()
buyers=models.ManyToManyField(Ticket, related_name="bought_tickets")
created_at=models.DateTimeField(auto_now_add=True)
updated_at=models.DateTimeField(auto_now=True)
views.py
def process(request):
Order.objects.create(full_name=request.POST['full_name'], cc_number=request.POST['cc_number'],exp_date=request.POST['exp_date'], cvc=request.POST['cvc'])
return redirect('/checkout')
def checkout(request):
context={
"user":User.objects.get(id=request.session['user_id']),
"tickets": Ticket.objects.filter(purchaser=User.objects.get(id=request.session['user_id'])).annotate(total=Sum(F('quantity') * F('price'), output_field=FloatField())).annotate(tax=ExpressionWrapper(F('quantity') * F('price')*0.0725, output_field=FloatField())).annotate(total_price=ExpressionWrapper(F('quantity') * F('price') + F('tax'), output_field=FloatField())),
"order":Order.objects.filter(buyer=Ticket.objects.get(id='tic_id'))
}
return render(request, 'first_app/checkout.html', context)
checkout.html
<p class="lead">Your order number is:<strong>{% for o in order %}{{o.id}}{% endfor %}</strong><p class="lead">with ticket number:</p><strong>{% for ticket in tickets %}{{ticket.id}}{% endfor %}</strong>