Проблема с флаттером и вложенным объектом django в методе http post - PullRequest
0 голосов
/ 21 апреля 2020

Я следую по ссылке ниже, чтобы отправить вложенный объект на django https://django.cowhite.com/blog/create-and-update-django-rest-framework-nested-serializers/

Мои классы даны:

    class Chef(models.Model):
        address = models.CharField(max_length=200,default='SOME STRING')
        name = models.CharField(max_length=100,default='SOME STRING')
        email = models.CharField(max_length=100,default='SOME STRING')
        phoneNo = models.IntegerField(default=0)
        password = models.CharField(max_length=100,default='SOME STRING')

    class Package(models.Model):
        price = models.IntegerField(default=0)   
        chef = models.ForeignKey(Chef, on_delete=models.CASCADE,related_name='package_set', null=True, blank=True)    
        package_no=models.IntegerField(default=0)

Сериализаторы:

    class Package_Serializer(serializers.ModelSerializer):

        class Meta:
            depth = 1
            model = Package
            fields = '__all__'


    class chef_package_Serializer(serializers.ModelSerializer):
        package_set = Package_Serializer(many=True)
        class Meta:
            model = Chef
            fields = ('address', 'name', 'email', 'phoneNo', 'password', 'package_set')


        def create(self, validated_data):
            package_data = validated_data.pop('package_set')
            musician = Chef.objects.create(**validated_data)
            for album_data in package_data:
                Package.objects.create(chef=musician, **album_data)
            return musician

Я использую «Почтальон» для отправки данных.

    {
            "address": "gg",
            "name": "dff",
            "email": "ggg",
            "phoneNo": 234,
            "password": "234",
            "package_set": [
                {

                    "price": 1500,
                    "package_no": 1,
                    "chef": {
                        "address": "gg",
                        "name": "dff",
                        "email": "ggg",
                        "phoneNo": 234,
                        "password": "234"
                    }
                }

            ]
        }

Данные сохранены, но при использовании приложения флаттера возникает следующая ошибка

E / флаттер (21201 ): [ОШИБКА: flutter / lib / ui / ui_dart_state. cc (157)] Необработанное исключение: тип List (Package) не является подтипом типа 'String' в типе cast

json Сериализуемые классы флаттера:

    @JsonSerializable()
    class Chef{

      Chef(

            this.address,
            this.name,
            this.email,
            this.phoneNo,
            this.password,
            this.package_set
          );


      final String address ;
      final String name ;
      final String email ;
      final String phoneNo ;
      final String password ;
      final List<Package> package_set ;





      factory Chef.fromJson(Map<String, dynamic> json) => _$ChefFromJson(json);

      Map<String, dynamic> toJson() => _$ChefToJson(this);
    }


    @JsonSerializable(explicitToJson: true)
    class Package {
       var price;
       var package_no;
      Chef chef;


      Package(

        this.price,
        this.package_no,
        this.chef,
      );



      factory Package.fromJson(Map<String, dynamic> json) => _$PackageFromJson(json);

      Map<String, dynamic> toJson() => _$PackageToJson(this);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...