I would like to ask where it could be a problem with my serializer or using it. I want to update serialized data inside object personal info but it keeps throwing me an error:
Traceback (most recent call last): File "C:\School\LS_2020_2021\MTAA\app\backend\env\lib\site-packages\django\core\handlers\exception.py", line 47, i n inner response = get_response(request) File "C:\School\LS_2020_2021\MTAA\app\backend\env\lib\site-packages\django\core\handlers\base.py", line 181, in _g et_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "C:\School\LS_2020_2021\MTAA\app\backend\env\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs) File "C:\School\LS_2020_2021\MTAA\app\backend\env\lib\site-packages\django \views\decorators\csrf.py", line 54, in wrapped_view return view_func(*args, **kwargs) File "C:\School\LS_2020_2021\MTAA\app\backend\cryptoeasy\api\views.py", line 45, in register personal_info.save() File "C:\School\LS_2020_2021\MTAA\app\backend\cryptoeasy\api\views.py", line 45, in register personal_info.save() File "C:\School\LS_2020_2021\MTAA\app\backend\cryptoeasy\api\views.py", line 45, in register personal_info.save() File "C:\School\LS_2020_2021\MTAA\app\backend\cryptoeasy\api\views.py", line 45, in register personal_info.save() File "C:\School\LS_2020_2021\MTAA\app\backend\env\lib\site-packages\rest_framework\serializers.py", line 200, in s ave self.instance = self.update(self.instance, validated_data) File "C:\School\LS_2020_2021\MTAA\app\backend\cryptoeasy\api\serializers.py", line 48, in update instance.user = attrs.get('user', instance.user) AttributeError: 'PersonalInfoSerializer' object has no attribute 'user' Here's my model PersonalInfo:
class PersonalInfo(models.Model): user = models.ForeignKey('User', models.DO_NOTHING, db_column='user', blank=True, null=True) firstname = models.CharField(max_length=255) lastname = models.CharField(max_length=255) card_id = models.CharField(unique=True, max_length=255) street = models.CharField(max_length=255) postal_code = models.IntegerField() city = models.CharField(max_length=255) photo = models.BinaryField(blank=True, null=True) debet_card_number = models.CharField(max_length=16) created_at = models.DateTimeField() last_update = models.DateTimeField() class Meta: managed = False db_table = 'Personal_info' Here's my serializer class:
class PersonalInfoSerializer(serializers.Serializer): user = serializers.IntegerField(required=False) firstname = serializers.CharField(max_length=255) lastname = serializers.CharField(max_length=255) card_id = serializers.CharField(max_length=255) street = serializers.CharField(max_length=255) postal_code = serializers.IntegerField() city = serializers.CharField(max_length=255) debet_card_number = serializers.CharField(max_length=16) created_at = serializers.DateTimeField(required=False) last_update = serializers.DateTimeField(required=False) def create(self, validated_data): return PersonalInfo.objects.create(**validated_data) def update(self, instance, attrs): print("instance", attrs.get('user', instance.user)) instance.user = attrs.get('user', instance.user) instance.save() return instance And here is my view function that is updating my deserilized object:
json = BytesIO(request.body) data = JSONParser().parse(json) data.update({'created_at': datetime.datetime.now(tz=timezone.utc), 'last_update': datetime.datetime.now(tz=timezone.utc), 'last_login': datetime.datetime.now(tz=timezone.utc), 'token':generate_key()}) user = UserSerializer(data=data) personal_info = PersonalInfoSerializer(data=data) if user.is_valid() and personal_info.is_valid(): if user_exists(data["email"]): response = {'Failed': 'email is already used'} return JsonResponse(response) elif card_exists(data["card_id"]): response = {'Failed': 'card id is already used'} return JsonResponse(response) else: user.save() personal_info = PersonalInfoSerializer(personal_info, {'user':10}, partial=True) personal_info.is_valid() personal_info.save() I think the main problem is calling serializer update but I tried everything :/ Thank you for help :)
https://stackoverflow.com/questions/66739161/django-serilizator-object-updating-problem March 22, 2021 at 09:06AM
没有评论:
发表评论