У меня есть django Backend и Angular 7, все отлично работает при отправке formData с моими параметрами и файлом, но когда я пытаюсь отправить вложенный json, он пуст.Вложенный json для вложенного сериализатора в моем объекте.
пример с почтальоном
Угловой POST
let input = new FormData();
var empty = {
name: "name"
}
input.append('username', user.value.username);
input.append('password', user.value.password);
if(profile_photo){
input.append('profile_photo', profile_photo, profile_photo.name);
}
input.append('first_name', user.value.first_name);
input.append('last_name', user.value.last_name);
input.append('email', user.value.email);
input.append('role', user.value.role);
input.append('active', user.value.active);
input.append('address', user.value.address);
input.append('job', user.value.job);
input.append('phone', user.value.phone);
input.append('phone_type', user.value.phone_type);
input.append('superadmin_profile', new Blob([JSON.stringify(empty)], {type : 'application/json'}));
input.append('general_profile', new Blob([JSON.stringify(empty)], {type : 'application/json'}));
input.append('security_profile', new Blob([JSON.stringify(empty)], {type : 'application/json'}));
if(user.value.properties){
input.append('properties', user.value.properties);
}
if(user.value.residentials){
input.append('residentials', user.value.residentials);
}
const httpOptions = {
headers: new HttpHeaders({
'Authorization': 'token ' + localStorage.getItem('userToken')
})
};
return this.http.post(this.Endpoints.getUsers, input, httpOptions);
Я поставил обязательный = False, такэто не дает «Это поле обязательно для заполнения».но он все еще пустой, я также напечатал request.data в представлении django, и вложенные переменные json есть, но не попадают в сериализатор.
Django Serializer
class UserSerializer(serializers.ModelSerializer):
superadmin_profile = SuperadminProfileSerializer(required=False)
general_profile = GeneralProfileSerializer(required=False)
security_profile = SecurityProfileSerializer(required=False)
residentials_photo = serializers.SerializerMethodField()
password = serializers.CharField(write_only=True)
"""
Serializer for Department model.
"""
class Meta:
model = User
fields = [
'id',
'password',
'username',
'first_name',
'last_name',
'email',
'role',
'active',
'address',
'job',
'phone_type',
'phone',
'superadmin_profile',
'general_profile',
'security_profile',
'residentials',
'residentials_photo',
'properties',
'sections',
'profile_photo'
]
def create(self, validated_data):
user = self.context['request'].user
print validated_data
superadmin_profile = validated_data.pop('superadmin_profile')
general_profile = validated_data.pop('general_profile')
security_profile = validated_data.pop('security_profile')