Данные не сохраняются в базе данных ; неожиданные аргументы ключевых слов
Я прошел через многие решения, опубликованные на SO и в других местах, но столкнулся с той же проблемой. Я совсем новичок в django и пытаюсь понять, где я ошибаюсь
Я получаю следующую ошибку
TypeError: Basetable() получил неожиданные аргументы ключевого слова: 'CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents'
.
У меня есть следующие данные JSON
jsonToUse = {
"CompanyId": "320193",
"CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": [
{
"decimals": "-6",
"unitRef": "usd",
"value": "39789000000"
},
{
"decimals": "-6",
"unitRef": "usd",
"value": "50224000000"
},
{
"decimals": "-6",
"unitRef": "usd",
"value": "25913000000"
},
{
"decimals": "-6",
"unitRef": "usd",
"value": "35929000000"
}
]
}
Модель:
class Basetable(models.Model):
basetable_id = models.AutoField(primary_key=True)
CompanyId = models.IntegerField()
class Cashcashequivalentsrestrictedcashandrestrictedcashequivalents(models.Model):
cashcashequivalentsrestrictedcashandrestrictedcashequivalents_id = models.AutoField(
primary_key=True)
unitRef = models.CharField(max_length=100)
value = models.CharField(max_length=100)
decimals = models.IntegerField()
basetable_id = models.ForeignKey(Basetable, on_delete=models.CASCADE)
Serializer:
class CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsSerializer(serializers.ModelSerializer):
class Meta:
model = Cashcashequivalentsrestrictedcashandrestrictedcashequivalents
fields = ['decimals', 'unitRef', 'value']
class CashFlowSerializer(serializers.ModelSerializer):
CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents = CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsSerializer(
many=True)
class Meta:
model = Basetable
fields = "__all__"
Вид:
.....#TRIMMED GET SYNTAX.....
check = CashFlowSerializer(data=jsonToUse)
if (check.is_valid(raise_exception=True)):
print("ready to send to db")
check.save()
return JsonResponse(jsonToUse, safe=False)
Я хочу сохранить данные в базе данных для предоставленного JSON
Посмотрите на полную трассировку ошибки, проблема в том, что вам нужно определить свой собственный метод create во вложенном сериализаторе:
TypeError: Got a `TypeError` when calling `Basetable.objects.create()`.
This may be because you have a writable field on the serializer class that is not a valid argument to `Basetable.objects.create()`.
You may need to make the field read-only, or override the CashFlowSerializer.create() method to handle this correctly.
...
TypeError: Basetable() got an unexpected keyword argument 'CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents'
Больше информации вы найдете в документации django-rest-framework Writable nested serializers .
По сути, итерация данных JSON и создание Cashequivalents
объектов.