如何为foreignkey映射的两个表编写POST视图?
这是我的模型。。
class Post(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE,null=True, blank=True,
editable=False)
title = models.CharField(max_length=255, null=False)
description = models.TextField(null=True, blank=True)
created_date = models.DateTimeField(auto_now=True)
enable = models.BooleanField(default=True)
class PostImages(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
images = models.ImageField(null=True, blank=True)
序列化程序:
class UserPostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ['author','title','description']
我制作了视图,但它对PostImages表没有任何作用。。我希望它能创建带有图片的帖子。。
@api_view(['POST'])
@permission_classes([IsAuthenticated])
def PostUpload(request):
data = request.data
user = request.user
if request.method == 'POST':
serializer = UserPostSerializer(data=data, many=False)
if serializer.is_valid():
serializer.save(author=user)
return Response(serializer.data)
return Response(serializer.errors)
我认为这应该能在中工作
class PostImagesSerializer(serializers.ModelSerializer):
class Meta:
model = PostImages
fields = ['images']
class UserPostSerializer(WritableNestedModelSerializer):
post_set = PostImagesSerializer()
class Meta:
model = Post
fields = ['author','title','description', 'post_set']
- 后缀集允许您引用FK(或者您可以将"related_name"添加到FK(
- 避免使用诸如";post"得到";等等
- 您可以使用breakpoint((或shell并使用
dir()
来查看可用于您的模型的方法(应该有post_set
或postimages_set
,我不记得了( - 现在您可以在视图中引用PostImages
- 阅读关于https://github.com/beda-software/drf-writable-nested