#django-rest-framework #django-serializer
#django-rest-framework #django-serializer
Вопрос:
У меня есть две модели CompanyDetails
и User
, для которых я создал две ModelSerializer
как CompanyDetailsSerializer
и RegisterUserSerializer
.
CompanyDetailsSerializer
class CompanyDetailsSerializer(serializers.ModelSerializer):
class Meta:
model = CompanyDetails
fields = ['id', 'company_name', 'is_active']
extra_kwargs = {
'company_name' : {
'required' : True,
'allow_null' : False,
'allow_blank' : False
}
}
RegisterUserSerializer
class RegisterUserSerializer(serializers.ModelSerializer):
'''
This serializer is for Register User view.
'''
company = CompanyDetailsSerializer()
class Meta:
model = User
fields = ['id', 'first_name', 'last_name', 'email', 'mobile_number', 'company', 'password']
extra_kwargs = {
'first_name' : {
'required' : True,
'allow_null' : False,
'allow_blank' : False
},
'last_name' : {
'required' : True,
'allow_null' : False,
'allow_blank' : False
},
'email' : {
'required' : True,
'allow_null' : False,
'allow_blank' : False
},
'mobile_number' : {
'required' : True,
},
'password' : {
'required' : True,
'allow_blank' : False,
'allow_null' : False,
'write_only': True
}
}
Запрос.данные имеют следующий JSON, который далее сериализуется с помощью RegisterUserSerializer
—
{
"first_name": "Jeet",
"last_name": "Patel",
"mobile_number": 9765136777,
"email": "jpatel99967@gmail.com",
"password": "123456",
"comapany": {
"company_name": "Yantra Inc"
}
}
Но RegisterUserSerializer
генерирует ошибку, указанную ниже.
{
"company": [
"This field is required."
]
}
Как мне отправить данные JSON в сериализатор?
Ответ №1:
Для начала, у вас есть опечатка в ваших данных: comapny
вместо company
.
Если предположить User
, что у вас есть внешний ключ Company
, то данные JSON, внесенные company
в ваш пользовательский JSON, должны быть действительным Company
первичным ключом.