DRF가있는 API를 작성하여 장바구니를 보려고합니다. 비 API 버전에서 작동하지만 serializer에서 필드가 모델에 존재하지 않는 오류가 발생합니다.외장 키가있는 모델 용 Django REST API
models.py
class Product(models.Model):
title = models.CharField(max_length=50, blank=False)
cover_image = models.ImageField(upload_to='products/')
summary = models.TextField()
description = models.TextField()
price = models.DecimalField(max_digits=6, decimal_places=2)
def __str__(self):
return self.title
class Cart(models.Model):
user = models.ForeignKey(User)
active = models.BooleanField(default=True)
order_date = models.DateField(null=True)
def __str__(self):
return self.user.username
class Order(models.Model):
product = models.ForeignKey(Product)
cart = models.ForeignKey(Cart)
quantity = models.IntegerField(default=1)
def __str__(self):
return self.product.title
views.py
def cartview(request):
if request.user.is_authenticated():
cart = Cart.objects.filter(user=request.user, active=True)
orders = Order.objects.filter(cart=cart)
total = 0
count = 0
for order in orders:
total += (order.product.price * order.quantity)
count += order.quantity
context = {
'total': total,
'cart': orders,
'count': count,
}
return render(request, 'store/cart.html', context)
else:
return redirect('index:index')
API/views.py
class CartAPIView(ListAPIView):
permission_classes = [IsAuthenticated]
serializer_class = CartSerializer
def get_queryset(self, **kwargs):
cart = Cart.objects.filter(user=self.request.user, active=True)
orders = Order.objects.filter(cart=cart)
total = 0
count = 0
for order in orders:
total += (order.product.price * order.quantity)
count += order.quantity
context = {
'total': total,
'cart': orders,
'count': count,
}
return context
serializers.py
class CartSerializer(ModelSerializer):
class Meta:
model = Cart
fields = [
'title',
'cover_image',
'summary',
'price',
]
이 오류가 발생합니다 필드 이름 title
은 Cart
모델에는 유효하지 않습니다.
템플릿보기에는 항목이 표시되지만 API보기에는 표시되지 않습니다. 그래서 내가 여기서해야 할 일은 뭐니?
장바구니 모델에는 제목이라는 제목이 없으므로 오류가 발생합니다. 어쩌면 오류가 있고 serializer 클래스에서 model = Cart (Meta 서브 클래스에서) 대신 model = Product를 사용해야합니다. 나는 그 문제를 해결할 것이라고 생각한다. –
get_queryset() 메소드는 queryset 객체를 반환해야한다. – Amar
제목 특성이없는 장바구니 모델을 serialize하려는 동안이 오류가 분명합니다. 접근법에 대해 다시 생각해 봐야합니다. 웹 API 개발 자동화를위한 http://www.apimonk.com/ – Amar