Django Models - Django admin выдает ошибку DataError при "установке" строки в целое число внутри внешнего ключа

Я настроил несколько моделей для платежей Stripe, одну для Product, а другую для Price. Вы можете видеть, что я установил значение API из Stripe в качестве первичного ключа. Вот их поля:

class Product(models.Model):
    stripe_product_id = models.CharField(max_length=100, primary_key=True)
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class Price(models.Model):
    stripe_price_id = models.CharField(max_length=100, primary_key=True)
    product = models.ForeignKey(
        Product, on_delete=models.CASCADE, to_field="stripe_product_id")
    price = models.IntegerField(default=0)

Django admin позволил мне создать продукт, используя строковый api ключ, затем, когда я пошел создавать объект Price, используя значение Price API из Stripe, и имея внешний ключ, установленный на мой продукт. Я получил следующую ошибку (мои значения api отредактированы): DataError: invalid input syntax for integer: "prod_xyz" LINE 1: UPDATE "payments_price" SET "product_id" = 'prod_xyz...

Я пробовал использовать параметр to_field в Foreign Key, но это не помогло.

Кто-нибудь знает метод, как это исправить? Или я должен просто вернуться к использованию первичного ключа по умолчанию с id продукта/цены как Unique?

Ниже описано, что я пытаюсь сделать в Admin. Django Admin, adding Price with my Product Foreign Key

class Product(models.Model):
    stripe_product_id = models.IntegerField(max_length=100, primary_key=True)
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class Price(models.Model):
    stripe_price_id = models.IntegerField(max_length=100, primary_key=True)
    product = models.ForeignKey(
        Product, on_delete=models.CASCADE, to_field="stripe_product_id")
    price = models.IntegerField(default=0)

Не смог найти ответ на вопрос, почему Django Foreign Key пытается вызвать несуществующий первичный ключ по умолчанию. Поэтому я просто использовал ключевое слово Unique вместо того, чтобы задать собственный первичный ключ.

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