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

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