Django создание нового объекта при вводе URL - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть django сообщение здесь

    def post(self, *args, **kwargs):
        self.object = self.get_queryset()

        approve_or_reject = self.request.POST.get('approve', None)
        book_pk = self.request.POST.get('data_pk', None)
        loan = self.request.POST.get('mark_loan', None) 
        cancel = self.request.POST.get('mark_cancel', None) 

        reserve_book = self.model.objects.filter(
            pk=book_pk,
            recipient=self.get_object(),
        )

        if loan == 'loan':
            titles = Title.objects.get(pk=book_pk)
            for title in titles.titlecopy_set.filter(in_rental=False):
                for status in title.title.reservedbooks_set.filter(recipient=self.get_object()):
                    status.mark_loan = False
                    status.save()
                    break
                title.rental_set.create(
                    recipient=self.get_object(),
                    borrowed_on=timezone.now(),
                    librarian=self.request.user.manager,
                )
                title.in_rental = True
                title.save()
                break

Это работает, когда я сохраняю Резервную книгу, однако после этого, когда я обновляю URL (не f5), он создает другой. Есть идеи, что пошло не так? спасибо

1 Ответ

1 голос
/ 02 апреля 2020

попробуйте так

if loan == 'loan':
            titles, created = Title.objects.get(pk=book_pk)
            for title in titles.titlecopy_set.filter(in_rental=False):
                for status in title.title.reservedbooks_set.filter(recipient=self.get_object()):
                    status.mark_loan = False
                    status.save()
                    break
                title.rental_set.get_or_create(
                    recipient=self.get_object(),
                    borrowed_on=timezone.now(),
                    librarian=self.request.user.manager,
                )
...