API를 작성하고 Shipping
모델의 모든 데이터를 GET 메소드로 리턴하는 방법을 알아 내려하지만 POST 메소드를 통해 pk를 계속 보냅니다.Django rest framework Django rest framework 모든 데이터를 가져 오지만 POST pk
이미 일부 솔루션 here과 here을 읽었지만 일부 문제에서 클라이언트가 기본 키만 보내야하는 두 가지 다른 동작이 필요합니다.
나는 나의 GET /Shipping
이 생길 수
[{
"pk": 1,
...
"city_of_origin": {
"pk": 1,
"name": "San Francisco",
"state": {
"pk": 1,
"initial": "CA",
"name": "California"
}
},
"destination_cities": [
{
"pk": 2,
"name": "San Jose",
"state": {
"pk": 1,
"initial": "CA",
"name": "California"
}
},{
"pk": 3,
"name": "Los Angeles",
"state": {
"pk": 1,
"initial": "CA",
"name": "California"
}
}
]
}]
그리고 이것은 내 POST에 :
[{
"pk": 1,
...
"city_of_origin": 1,
"destination_cities": [2, 3]
}]
나는 변경하려고했는데 내 serializers.py
:
class StateSerializer(serializers.ModelSerializer):
class Meta:
model = State
class CitySerializer(serializers.ModelSerializer):
state = StateSerializer()
class Meta:
model = City
class ShippingSerializer(serializers.ModelSerializer):
city_of_origin = CitySerializer()
destination_cities = CitySerializer(many=True)
class Meta:
model = Shipping
그것을 모든 데이터를 반환하는 데는 효과적 이었지만 모든 API 루트 양식이 변경되어 도시와 주를 만들도록 강요되었습니다. 내 배송에 맡겨져 있습니다. 여기에서 시리얼 라이저를 변경하기 전에 도시와의 드롭 다운 메뉴가 있습니다. 그러나이 드롭 다운의 전시는 내가 POST 양식에 기대하는 행동입니다.
은 여기입니다 내 models.py
:
class Shipping(models.Model):
city_of_origin = models.ForeignKey(City, related_name='origin', default=None)
destination_cities = models.ManyToManyField(City, related_name='destiny', default=None)
class City(models.Model):
name = models.CharField(blank=False, null=True, max_length=255)
state = models.ForeignKey(State, null=True)
def __str__(self):
return self.name
class State(models.Model):
name = models.CharField(blank=False, null=True, max_length=255)
initial = models.CharField(max_length=2, blank=False, null=True)
def __str__(self):
return self.name
내가 사전에 모든 너희들이 나에게 제공 할 수있는 도움에 감사드립니다.
편집 : 나는 장고 1.9.5과 장고 나머지 프레임 워크를 사용하고 3.3.3
죄송합니다. 언급하는 것을 잊어 버렸지 만, 이런 종류의 ViewSet을'ModelViewSet'과 queryset 및 serializer 클래스의 기본 선언으로 사용하고있었습니다. 당신의 솔루션은 완벽하게 작동했습니다. 매우 감사드립니다. 감사합니다! – moshemeirelles