django RESTフレームワークを使用して、cartという名前のモデルに複数のオブジェクトを追加しようとしています。ユーザはCartオブジェクトの複数のデータセットをCartAddSerializerに送り、シリアライザはデータベースの行を1つずつ追加します。次のように私のコードの進行状況は、これまでのところです:1回の呼び出しで複数のオブジェクトを作成する
models.py:
class Cart(models.Model):
user = models.ForeignKey(User)
product = models.ForeignKey(Product)
sh_price = models.DecimalField(max_digits=10, decimal_places=2)
quantity = models.IntegerField()
date_added = models.DateTimeField(auto_now_add=True, blank=True, null=True)
class Meta:
unique_together = ["user", "product"]
serializer.py:
class CartAddSerializer(ModelSerializer):
def __init__(self, *args, **kwargs):
many = kwargs.pop('many', True)
super(CartAddSerializer, self).__init__(many=many, *args, **kwargs)
class Meta:
model = Cart
fields = ['user', 'product', 'sh_price', 'quantity', 'date_added']
extra_kwargs = {'date_added': {'read_only': True},
'sh_price': {'read_only': True},}
def create(self, data):
product_data = data.get('product' or None)
print(product_data)
print(product_data.id)
product_price = ProductPrice.objects.get(product=product_data)
print(product_price)
print(product_price.sh_price)
return Cart.objects.create(sh_price=product_price.sh_price, **data)
はviews.py:
一般class CartAddAPIView(ListCreateAPIView):
queryset = Cart.objects.all()
serializer_class = CartAddSerializer
lookup_field = 'pk'
lookup_url_kwarg = 'id'
def get(self, request, *args, **kwargs):
try:
cart = Cart.objects.filter(user=self.kwargs['id'])
print(cart)
serializer = CartDetailSerializer(cart, many=True, context={'request': request})
return Response(serializer.data, status=status.HTTP_200_OK)
except Exception as e:
print(str(e))
return Response({"status": "failed"}, status=status.HTTP_400_BAD_REQUEST)
質問が明確で具体的であることを確認してください。カートを書くことはやや曖昧です。 – Linovia
申し訳ありません。私はいくつかの変更を行った@Linovia –
あなたの実際の質問は何ですか? – Bono