getting error related to arrayfield
when trying to access serialized.data, throws error for type "models.ArrayField"
Python script
models:
class testStep(models.Model):
number = models.PositiveSmallIntegerField(max_length=100)
payload = models.JSONField(blank=True)
header = models.JSONField(blank=False)
assertors = models.EmbeddedField(model_container=assertStep, blank=True)
dateCreated = models.DateTimeField(auto_now_add=True)
dateUpdated = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class test(models.Model):
_id = models.ObjectIdField(primary_key=True)
appId = models.ForeignKey(application, on_delete=models.PROTECT)
name = models.TextField(blank=False, unique=True)
step = models.ArrayField(model_container=step, blank=True, default=list)
dateCreated = models.DateTimeField(auto_now_add=True)
dateUpdated = models.DateTimeField(auto_now=True)
serializers:
class testStepSerializer(serializers.ModelSerializer):
class Meta:
model = models.testCase
fields = '__all__'
read_only_fields = ['dateCreated', 'dateUpdated', ]
def update(self, instance, validated_data):
instance.testStep = validated_data.get('testStep', instance.testStep)
instance.save()
return instance
views.py
def put(self, request, testCaseId, format=None):
tcDetails = self.getTcDetails(testCaseId)
reqData = request.data.copy()
reqData['number'] = len(tcDetails.testStep) + 1
reqData['name'] = tcDetails.name
serialized = serialize.testStepSerializer(tcDetails, data=reqData)
if serialized.is_valid():
serialized.save()
return Response(json.loads(json_util.dumps(serialized.data)), status=status.HTTP_200_OK)
return JsonResponse(serialized.errors, status=400)
Traceback
serialized.data --
Traceback (most recent call last):
File "
Same issue. I added str to my abstract classes and now it is a validation error. Django admin says that my values must be an instance of <class 'list'> to my models. ArrayField and must be an instance of <class 'dict'> to my models.EmbeddedField