상품이 다 측. 한 사람이 여러개의 상품 담을 수 있다. 1대다
product 모델에 seller 추가
from django.db import models
# Create your models here.
from rest_framework.authtoken.admin import User
class Product(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
price = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
seller = models.ForeignKey(User, on_delete=models.CASCADE)
seller는 로그인 한 사용자가 되도록 해야함
form이랑 비슷한게 serializer였고,
serializer 변경
from rest_framework import serializers
from product.models import Product
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ['name','description','price',]
product views.py에 함수 추가
# 로그인 한 사용자만 게시글 저장(로그인한 사용자 정보로만 저장되게)
def create(self,request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
serializer.save(seller=request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
해서 로그인하고 POST로 등록할 수 있으면 됨. DB확인해서 sellerid가 로그인한사람의 id면 됨
리뷰에 사용자 달기
from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator
# Create your models here.
from rest_framework.authtoken.admin import User
class Review(models.Model):
score = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(5)]) # 0최소값, 5최대값으로 설정해 리뷰 0~5점까지 받도록
contents = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
writer = models.ForeignKey(User, on_delete=models.CASCADE)
from rest_framework import serializers
from review.models import Review
class ReviewSerializer(serializers.ModelSerializer):
class Meta:
model = Review
fields = ['score','contents',] # writer는 빼고
class ReviewList(APIView):
...
def post(self,request):
serializer = ReviewSerializer(data=request.data)
if serializer.is_valid():
serializer.save(writer=request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
# 로그인 한 사용자만 게시글 저장(로그인한 사용자 정보로만 저장되게)
def create(self,request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
serializer.save(seller=request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
이렇게 고쳐도 됨
def perform_create(self, serializer):
serializer.save(user=self.request.user)