Как исправить get () вернул более одного ордера - вернул 2 - PullRequest
0 голосов
/ 01 мая 2020

У меня есть проект с курсами, и я попытался добавить к этому платежную систему, сделал все для этого, и когда я добавляю в корзину более одного курса (не имеет значения тот же курс или нет), я получаю эту ошибку () вернул более одного ордера - вернул 2! Это действительно странно, потому что я делал эту систему в предыдущих проектах, и все работало, но теперь я это понимаю. Может быть, проблема в том, что я создал пользовательского пользователя и сделал два типа пользователей, но я не уверен в этом, а также я попытался изменить соединение между преподавателем и студентами (курсом) с внешнего ключа на одно-одно поле, но там я получаю много другие ошибки, а также в представлении корзины изменились, попали в фильтр, и ошибка исчезла, но я не видел заказов в корзине. Как исправить эту ошибку?

модели

class Course(models.Model):
    title = models.CharField(max_length=255)
    tutor = models.ForeignKey(User,related_name='tutor_courses',on_delete=models.CASCADE)
    students = models.ForeignKey(User,related_name='course_students',blank=True,null=True,on_delete=models.CASCADE)

class Order(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    courses = models.ManyToManyField(OrderCourse)
    ordered = models.BooleanField(default=False)

class OrderCourse(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    ordered = models.BooleanField(default=False)
    course = models.ForeignKey(Course,on_delete=models.CASCADE)

просмотров

def add_to_cart(request,pk):
    course = get_object_or_404(Course,pk=pk)
    order_course,created = OrderCourse.objects.get_or_create(
        course=course,
        user=request.user,
        ordered = False,
    )
    ordered_date = timezone.now()
    order = Order.objects.create(user=request.user,ordered_date=ordered_date)
    order.courses.add(order_course)
    messages.info(request,"This course was added to your cart.")
    return redirect("courses:cart")

class CartView(LoginRequiredMixin,View):
    def get(self,*args,**kwargs):
        try:
            order = Order.objects.get(user=self.request.user,ordered=False)
            context = {
                'object':order
            }
            return render(self.request,'courses/cart.html',context)
        except ObjectDoesNotExist:
            messages.error(self.request,"You do not have an active order")
            return redirect("/")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...