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.
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 вместо того, чтобы задать собственный первичный ключ.