Я работаю над проектом с использованием Python (3.7) и Django (2.1), в котором я обновляю модель и сохраняю ее, после чего, если я сначала проверяю вид списка, он показывает обновление правильно, но как только я открылв детальном представлении оно потеряло обновление и вернулось в предыдущее состояние.
Вот что я пробовал:
С models.py
:
class Order(models.Model):
status_choices = (
('Active', 'Active'),
('Completed', 'Completed'),
('Late', 'Late'),
('Short', 'Short'),
('Canceled', 'Canceled'),
('Submitted', 'Submitted')
)
delivery_status_choices = (
('Accepted', 'Accepted'),
('Rejected', 'Rejected')
)
gig = models.ForeignKey('Gig', on_delete=models.CASCADE)
seller = models.ForeignKey(User, on_delete=models.CASCADE, related_name='selling')
buyer = models.ForeignKey(User, on_delete=models.CASCADE, related_name='buying')
created_at = models.DateTimeField(auto_now=timezone.now())
charge_id = models.CharField(max_length=234)
days = models.IntegerField(blank=False)
status = models.CharField(max_length=255, choices=status_choices)
delivery = models.FileField(upload_to=content_file_name, blank=True)
def __str__(self):
return f'{self.buyer} order from {self.seller}'
С template.html
:
{% if not order.status == 'Completed' and not order.status == 'Submitted' and not order.status == 'Canceled' %}
{% if order.buyer.username == user.username %}
<form method="post" action="{% url 'order-cancel' %}">
{% csrf_token %}
<input type="text" name="id" value="{{ order.id }}" hidden />
<button type="submit" class="btn btn-primary align-content-center">Cancel the Order</button>
</form>
{% elif order.status == 'Canceled' %}
<p> Your order has been canceled already!</p>
{% endif %}
{% else %}
<p> You can't cancel this order now.</p>
{% endif %}
и С views.py
:
@login_required()
def order_cancel(request):
if request.method == 'POST':
try:
order_id = request.POST.get('id')
print(order_id)
order = Order.objects.get(id=order_id)
charge_id = order.charge_id
refund = stripe.Refund.create(
charge=charge_id,
)
order.status = 'Canceled'
order.save()
print(order.status)
print('success')
return HttpResponseRedirect(reverse_lazy('buying'))
except Order.DoesNotExist:
return redirect('home')
Я пытаюсь обновитьstatus
из order
, когда я отправляю запрос к представлению order-cancel
, сначала он сохраняет status
как отмененный, а когда я загружаю detailed
(Страница одного объекта), он возвращает обновленный status
назад oпредыдущий раз.
Что тут может быть не так?
Заранее спасибо!