Как преобразовать JSON данные в python экземпляр и сохранить Django модели в нескольких таблицах с foreginkey (база данных sqllite)
* У меня не получается сохранить с id_category = models.ForeignKey
.
пожалуйста, помогите мне решить
ValueError: Cannot assign "21": "Categories.parent" должен быть экземпляром "Parents". *
View.py
def GetProducts(request):
endpoint = "[https://myurl.net/products/][1]"
response = requests.request("GET", endpoint)
data = json.loads(response.text)
for cat in data['Category']:
›
pro_cat = ProCatData(
id=cat['id'],
name=cat['name'],
image=cat['image'],
)
pro_cat.save()
for product in data['Products']:
Products = ProductsData(
id=product['id'],
name=product['name'],
id_category=product['id_category'],
description=product['description'],
image=product['image'],
)
Products.save()
model.py
class ProCatData(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=30, null=True, blank=True)
image = models.CharField(max_length=30)
def __str__(self):
return self.name
class ProductsData(models.Model):
id_category = models.ForeignKey(ProCatData, on_delete=models.DO_NOTHING,null=True, blank=True)
image = models.CharField(max_length=300, null=True, blank=True)
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=30, null=True, blank
Если вы используете первичный ключ объекта, он должен быть id_category_id, поэтому:
for product in data['Products']:
ProductsData.objects.create(
id=product['id'],
name=product['name'],
id_category_id=product['id_category'],
description=product['description'],
image=product['image'],
)
Но не имеет особого смысла давать ForeignKey префикс id_… (или суффикс …_id), поскольку он будет извлекать ProCatData запись, а не возвращать первичный ключ этого объекта.