Có hai kiểu: Product
và Picture
. Mỗi Product
có thể có một số Picture
s. Tôi có câu hỏi khi tôi muốn tạo Sản phẩm bằng POST. Làm thế nào để POST một đối tượng lồng nhau có chứa một danh sách ImageField?Cách đăng dữ liệu lồng nhau và danh sách hình ảnh
Mô hình Product
là:
class Product(models.Model):
product_id = models.AutoField(primary_key=True)
product_name = models.CharField(max_length=50)
description = models.TextField(blank=True)
Mô hình Picture
là:
class Picture(models.Model):
product = models.ForeignKey(Product, related_name='pictures')
path = models.ImageField(null=False, upload_to='product_pic')
description = models.CharField(max_length=255, null=True, blank=True)
main = models.BooleanField()
Tôi viết serializer.py như sau:
class PictureSerializer(serializers.ModelSerializer):
class Meta:
model = Picture
fields = ('path', 'description', 'main')
class ProductSerializer(serializers.ModelSerializer):
pictures = PictureSerializer(many=True, required=False)
class Meta:
model = Product
fields = ('product_id', 'product_name', 'pictures', 'description')
Quan điểm cho rằng tôi đang sử dụng là:
class ProductEnum(generics.ListCreateAPIView):
queryset = Product.objects.all()
serializer_class = ProductSerializer
permission_classes = (IsAuthenticated,)
def post(self, request, format=None):
serializer = ProductSerializer(data=request.DATA, files=request.FILES)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Tôi đăng ký nó trong url như:
url(r'^api/products/$', views.ProductEnum.as_view()),
Các câu hỏi là:
- Làm thế nào tôi có thể kiểm tra POST này api như
django-rest-framework
nói với tôi rằng "Lists hiện không được hỗ trợ trong Nhập HTML " - Cách sử dụng JSON để POST một tài nguyên
Product
với nhiều sốPictures
. HOẶC Tôi phải sử dụng trình phân tích cú pháp nhiều phần. - Cách viết lệnh cURL?
bạn có quản lý để làm đúng không? – momokjaaaaa