How to create two table objects by one viewset django rest framework
Hi i am trying to save objects in reviews table from posts table filtered by type="R"
i think i should override def create but i don't know how. please help me thanks.
this is my post model
class Post(models.Model):
"""Model definition for Post."""
class Meta:
db_table = 'posts'
verbose_name = 'Post'
verbose_name_plural = 'Posts'
POST_TYPE = (
('R', 'review'),
('C', 'clubpost'),
('A', 'advertisement'),
)
title = models.CharField(
max_length=20,
null=False,
verbose_name='제목'
)
content = models.TextField(
max_length=2000,
null=False,
verbose_name='내용'
)
author = models.ForeignKey(
User,
on_delete=models.CASCADE,
null=False,
verbose_name='글쓴이',
)
type = models.CharField(
max_length=5,
choices=POST_TYPE,
null=True,
verbose_name='글 종류',
)
created_at = models.DateTimeField(
auto_now_add=True,
verbose_name='생성 일시',
)
updated_at = models.DateTimeField(
auto_now=True,
verbose_name='수정 일시',
)
review model
class Review(models.Model):
class Meta:
db_table = 'reviews'
verbose_name = 'Review'
verbose_name_plural = 'Reviews'
post = models.OneToOneField(
Post,
on_delete=models.CASCADE,
related_name="review",
)
post serializer
class PostSerializer(ModelSerializer):
author = UserAbstractSerializer(read_only=True)
class Meta:
model = Post
fields = [
'id',
'title',
'content',
'author',
'type',
'created_at',
'updated_at'
]
extra_kwargs = {
'title': {
'error_messages': {
'required': '제목을 입력해주세요.',
}
},
'content': {
'error_messages': {
'required': '내용을 입력해주세요.',
}
}
}
review serializer
class ReviewSerializer(ModelSerializer):
post_id = PostSerializer(read_only=True)
class Meta:
model = Post
fields = [
'id',
'post_id',
]
review viewset
class ReviewViewSet(PostViewSet):
queryset = Post.objects.filter(type="R"),
serializer_class = ReviewSerializer
def perform_create(self, serializer):
return serializer.save(author=self.request.user, type="R")
i think i should override create method in review viewset but i dont know how to write
wanna figure out how to create two table objects by one viewset django rest framework

