通过外键连接的两个表的DRF/POST视图



如何为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']
  1. 后缀集允许您引用FK(或者您可以将"related_name"添加到FK(
  2. 避免使用诸如";post"得到";等等
  3. 您可以使用breakpoint((或shell并使用dir()来查看可用于您的模型的方法(应该有post_setpostimages_set,我不记得了(
  4. 现在您可以在视图中引用PostImages
  5. 阅读关于https://github.com/beda-software/drf-writable-nested

最新更新