[英]How to post list in drf post request via postman
我有一個客戶端模型,它可以有多個號碼,就像一個人可以有多個電話號碼一樣。 我想在我的數據庫中創建一個客戶端,同時添加它的所有電話號碼。 就像一個人在表單中提交他的數據一樣。
現在我在郵遞員中測試我的 API,但可以在序列化程序中添加數字字段時提交數據,GET 請求正在工作,但我正在為 post 而苦苦掙扎
模型.py
class Client(models.Model):
name = models.CharField(max_length=32)
departure = models.DateTimeField(default=None, blank=True)
arrival = models.DateTimeField(default=None, blank=True)
price = models.IntegerField(validators=[MinValueValidator(0)])
def __str__(self):
return self.name
class Number(models.Model):
number = models.IntegerField()
client = models.ForeignKey(Client, on_delete=models.CASCADE, null=True, related_name='number')
序列化程序.py
class NumberSerializer(serializers.ModelSerializer):
class Meta:
model = Number
fields = ('id', 'number')
class ClientSerializer(serializers.ModelSerializer):
number = NumberSerializer(many=True)
class Meta:
model = Client
fields = ('id', 'name', 'departure', 'arrival', 'price','number')
視圖.py
class ClientViewSet(viewsets.ModelViewSet):
queryset = Client.objects.all()
serializer_class = ClientSerializer
authentication_classes = (TokenAuthentication, )
permission_classes = (IsAuthenticated,)
這就是我通過郵遞員發出帖子請求並收到錯誤的方式
我認為您需要覆蓋create
方法以制作可寫的嵌套序列化程序:
class NumberSerializer(serializers.ModelSerializer):
class Meta:
model = Number
fields = ('id', 'number')
class ClientSerializer(serializers.ModelSerializer):
number = NumberSerializer(many=True)
class Meta:
model = Client
fields = ('id', 'name', 'departure', 'arrival', 'price','number')
def create(self, validated_data):
number_data = validated_data.pop('number')
number = Number.objects.create(**number_data)
client = Client.objects.create(number=number, **validated_data)
return client
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.