Saya mengumpulkan dua pesan validasiError tetapi jika ada yang dipicu itu memberi saya pesan yang sama dari salah satu pesan adalah "Pengguna sudah memiliki model profil saat ini Cobalah untuk memperbaruinya tidak membuat yang baru"

Ini kodenya

    class CurrentProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = CurrentProfile
        fields = '__all__'
        read_only_fields = ('user', )
    def create(self, validated_data):
        try:
            c_profile = CurrentProfile(**validated_data)
            if c_profile.profile.owner != c_profile.user:
                raise serializers.ValidationError('You can only use profiles that the user created')
            c_profile.save()
            return c_profile
        except:
            raise serializers.ValidationError('User has already a current profile model try to update it not creating a new one')

Cobalah dan kecuali blok dibuat karena saya marah atas realtionsi onetoone dalam model saya currentProfile dengan model pengguna sehingga akan memicu kesalahan jika saya mencoba menambahkan lebih dari satu contoh model yang sama dengan pengguna yang sama. Kesalahan validasi dalam blok IF dibuat untuk memastikan bahwa profil yang dipilih dibuat oleh pengguna yang sama bukan hanya profil acak yang dibuat oleh pengguna lain

Yang aneh adalah bahwa jika saya menghapus mencoba dan kecuali blok itu berfungsi dengan baik tetapi ketika menambahkannya lagi dalam kedua kasus itu memberi saya pesan kesalahan validasi yang sama yaitu "pengguna sudah memiliki model profil saat ini, coba perbarui yang baru Satu "meskipun jika pengguna tidak memiliki instance currentprofile dan hanya mencoba memilih profil yang bukan miliknya.

1
Mohamed Ehab 5 April 2021, 01:07

1 menjawab

Jawaban Terbaik

Anda menaikkan kesalahan dari dalam blok try Anda, yang membuatnya selalu masuk ke blok except dan meningkatkan kesalahan di sana. Coba ini, sebaliknya:

  class CurrentProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = CurrentProfile
        fields = '__all__'
        read_only_fields = ('user', )
    def create(self, validated_data):
        c_profile = CurrentProfile(**validated_data)

        if c_profile.profile.owner != c_profile.user:
            raise serializers.ValidationError('You can only use profiles that the user created')

        try:
            c_profile.save()
        except:
            raise serializers.ValidationError('User has already a current profile model try to update it not creating a new one')

        return c_profile
0
Dave 5 April 2021, 02:40