Я создаю новый объект SearchNeighborhood
и подключаю его к уже созданному объекту SearchCity
в запросе POST
.
У меня есть следующие модели
class SearchCity(models.Model):
city = models.CharField(max_length=200)
class SearchNeighborhood(models.Model):
city = models.ForeignKey(SearchCity, on_delete=models.CASCADE)
neighborhood = models.CharField(max_length=200)
мой соответствующий сериализатор:
class SearchNeighborhoodSerializer(serializers.ModelSerializer):
class Meta:
model = SearchNeighborhood
fields = ('pk', 'neighborhood')
мой взгляд и соответствующий метод:
class CityNeighborhoodsListCreate(APIView):
def post(self, request, *args, **kwargs):
citypk = kwargs.get('citypk', None)
city=get_object_or_404(SearchCity,pk=citypk)
serialized = SearchNeighborhoodSerializer(data=request.data)
if serialized.is_valid(raise_exception=True):
validatedData = serialized.validated_data
neighborhood = validatedData.get('neighborhood')
neighborhoodobject = SearchNeighborhood(neighborhood= neighborhood, city = city)
neighborhoodobject.save()
createdneighborhood = SearchNeighborhoodSerializer(neighborhoodobject)
return Response({
'neighborhood': createdneighborhood.data
})
Я использую Ангуляр 4
мой AJAX
запрос:
addneighborhood(){
const payload = {
neighborhood: this.addneighborhoodform.form.value.addneighborhoodinput
};
this.suitsettingsservice.addneighborhood(payload)
.subscribe(
(req: any)=>{
this.selectedcityneighborhoods.push(req);
});
ошибка, которую я получаю:
HttpErrorResponse {headers: HttpHeaders, status: 400, statusText: "Bad Request", url: "http://127.0.0.1:8000/api/suitsadmin/settings/neighborhoodbycity", ok: false, …}
error:city : "This field is required."
Он говорит, что требуется объект города. но я не прошу об этом в сериализаторе. Я не уверен, что я делаю неправильно.
редактировать: я попытался исправить, рекомендованное в этом сообщении: unique">Django REST Framework: это поле обязательно для заполнения. с required=False и unique_together
передачи объекта города в сериализатор
def post(self, request, *args, **kwargs):
citypk = kwargs.get('citypk', None)
city=get_object_or_404(SearchCity,pk=citypk)
serialized = SearchNeighborhoodSerializer(city,data=request.data)
город передан в сериализатор выше
но это ничего не изменило
редактировать:
Я попытался установить поле города сериализаторов только для чтения. Но и это не помогло
Спасибо за помощь.