Проблема с парсингом Json'a, drf
Имеется json вида -
{
"main_info":{
"genres": [
"сд",
"бв",
"аб"
],
"countries_created": [
"Россия",
"Англия",
"Австрия"
],
"license_types": [
"Тип1",
"Тип2",
"Тип3"
],
"rights_holder": "Кто-то, ООО",
"group": "Группа1",
"product_name": "Продукт",
"purchaser": "ООО \"Другой Кто-то\"",
"content_type": "Рос. продукт",
"year_created": "2019",
"age_restriction": "6",
"episode_duration": "1",
"total_duration": "1",
"contract_currency": "Дол.",
"amount_episodes": "5",
"seasons_number": "1",
"partner_info": { ---- сущность связанная с MainInfo по Foreign Key
"allowed_platforms": [
"Разрешенная платформа"
],
"restricted_platforms": [
"Запрещенная платформа"
]
}
}
}
2 модели в django:
class MainInfo(models.Model):
# id = models.IntegerField(primary_key=True)
rights_holder = models.CharField(max_length=50)
group = models.CharField(max_length=8)
product_name = models.CharField(max_length=250)
purchaser = models.CharField(max_length=100)
content_type = models.CharField(max_length=22)
genres = models.JSONField(max_length=255)
countries_created = models.JSONField(max_length=255)
year_created = models.IntegerField()
age_restriction = models.CharField(max_length=3)
episodes_quantity = models.IntegerField(blank=True, null=True)
season_number = models.IntegerField(blank=True, null=True)
episode_duration = models.CharField(max_length=6)
total_duration = models.CharField(max_length=12)
contract_currency = models.CharField(max_length=4)
partner_info = models.ForeignKey('PartnerInfo', on_delete=models.CASCADE, related_name='main_info')
class Meta:
app_label = 'api'
class PartnerInfo(models.Model):
allowed_platforms = models.JSONField()
restricted_platforms = models.JSONField()
Как правильно сериализовать этот json и сложить его в таблицы, чтобы в maininfo был partner_info_id ссылался на таблицу partnerinfo.id
2 сериализатора, которые я кручу уже второй день:
class PartnerInfoSerializer(serializers.ModelSerializer):
class Meta:
model = main_models.PartnerInfo
fields = ('allowed_platforms', 'restricted_platforms')
def create(self, validated_data):
return main_models.PartnerInfo.objects.create(**validated_data)
class MainInfoSerializer(serializers.ModelSerializer):
partner_info = PartnerInfoSerializer()
class Meta:
model = main_models.MainInfo
fields = ('genres', 'countries_created', 'rights_holder', 'group', 'product_name',
'purchaser', 'content_type', 'year_created', 'age_restriction', 'episode_duration',
'total_duration', 'contract_currency', 'episodes_quantity', 'season_number', 'partner_info')
def create(self, validated_data):
validated_data.pop('partner_info')
main_info_data = main_models.MainInfo.objects.create(**validated_data)
return main_info_data
Проблема в том, как я вижу, что должна создаться запись в partner info и её id передаться в MainInfo. Не знаю, как это сделать.