Как я могу использовать целочисленное поле в качестве внешнего ключа в Django?

Вы можете увидеть мои файлы ниже. У меня есть две модели: Order и OrderedBook. Когда пользователь делает заказ, я создаю несколько экземпляров OrderedBook (их количество зависит от того, сколько книг заказал пользователь). Кроме того, OrderedBook имеет поле 'orderNumber', которое является внешним ключом. Однако я хочу, чтобы это было целое число, но Django требует экземпляр Order. Как я могу реализовать это?

models.py

class Order(models.Model):
    orderNumber = models.AutoField('Номер замовлення', primary_key=True)
    userFirstName = models.CharField('Ім\'я', max_length=32)
    userLastName = models.CharField('Прізвище', max_length=32)
    userPatronymic = models.CharField('По-батькові', max_length=32)
    userEmail = models.EmailField('Електронна адреса', )
    userPhone = models.CharField('Номер телефону', max_length=13, validators=[phoneNationalFormatValidator, phoneLessNumbersValidator, phoneValidFormatValidator])
    delivery = models.CharField('Доставка', choices=DELIVERY, max_length=10, default='NovaPoshta')
    date = models.DateTimeField(default = timenow)
    deliveryAddress = models.CharField(max_length=128, default='')

    def __str__(self):
        return f"Замовлення №{self.orderNumber}"

class OrderedBook(models.Model):
    orderNumber = models.ForeignKey(Order, on_delete=CASCADE, to_field='orderNumber')
    user = models.ForeignKey(CustomUser, on_delete=CASCADE)
    book = models.ForeignKey(Book, on_delete=CASCADE)

    def __str__(self):
        return f'Замовлення №{self.orderNumber} - {self.book}'

views.py

def cart(request):
items = CartItem.objects.filter(user=request.user)
total = sum(x.book.price for x in items)
if request.method == 'POST':
    form = OrderForm(request.POST)
    if form.is_valid():
        form.save()
        theSameForm = form.save()
        # after purchase delete all ordered books from user's cart and reduce their count by 1
        for cartItem in items:
            book = Book.objects.get(ISBN=cartItem.book.ISBN)
            book.number -= 1
            book.save()

            newOrderedBook = OrderedBook.objects.create(
                orderNumber = theSameForm.pk, # problem
                user = request.user,
                book = book,
            )

            cartItem.delete()

        return redirect('index')

    context = {
        'items': items,
        'total': total,
        'form': form
    }

    return render(request, 'cart.html', context)

form = OrderForm()
context = {
    'items': items,
    'total': total,
    'form': form
}

return render(request, 'cart.html', context)

P.S. Как вы видите, я установил to_field параметр в поле OrderedBook orderNumber. Однако для этого по-прежнему требуется экземпляр Order

Вернуться на верх