Ich habe ein Profilmodell, das nach der Anmeldung des Benutzers sein Profil aktualisieren muss. Dafür habe ich zwei Serializer entworfen, einen UserSerializer, um die Liste der Benutzer anzuzeigen, und einen anderen ProfileSerializer, der viele Felder enthält, die der Benutzer in seinem Profil hinzufügen kann. Der Benutzer kann nicht nur sein Profil wie Höhe, Gewicht, Alter, Ort, Körper_Typ etc. aktualisieren, sondern sollte auch Vorname, Nachname, E-Mail aus dem Profil aktualisieren.Zeige Vorname, Nachname und E-Mail im Profil Serializer
Hier ist meine UserSerializer und ProfileSerializer
class ProfileSerializer(serializers.ModelSerializer):
# url = serializers.HyperlinkedRelatedField(source="user", view_name="user_profile")
user = serializers.PrimaryKeyRelatedField(read_only=True)
token = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model = Profile
fields = ('token', 'user', 'current_location', 'permanent_location', 'dob',
'about_me', 'gender_status', 'create_profile_for', 'marital_status',
'height', 'weight', 'body_type', 'complexion',)
def update(self, instance, validated_data):
first_name = validated_data.pop('first_name', None)
last_name = validated_data.pop('last_name', None)
user_inst_fields = {}
if first_name:
user_inst_fields['first_name'] = first_name
if last_name:
user_inst_fields['last_name'] = last_name
if user_inst_fields:
User.objects.update_or_create(id=instance.user.id, defaults=user_inst_fields)
profile, created = Profile.objects.update_or_create(token=instance.token, defaults=validated_data)
print('profile', profile, created)
return profile
class UserSerializer(serializers.ModelSerializer):
profile = ProfileSerializer(required=True)
class Meta:
model = User
fields = ('id', 'profile', 'username', 'email', 'first_name', 'last_name',)
ich nicht die Bereiche first_name, last_name und Benutzernamen für die Benutzer sie zusammen mit ihrem Profil zu aktualisieren zeigen konnte.
Sie den Screenshot sehen können, keine first_name, last_name und Benutzername ist
gezeigt
Aber warum die Felder nicht mit dem aktuellen Wert, den Sie im Screenshot sehen können gefüllt? – Serenity
valided_data.pop ('first_name', None) gibt mir keine die ganze Zeit. – Serenity
sollte mein Update in UserSerializer oder ProfileSerializer sein? – Serenity