我必须上传多张图片并保存它们的 URL。可以上传多张图片,但帖子将是一张,其他帖子也类似。我已经创建了模型,但我不知道如何为它创建序列化程序。
我的模特是:
class Posts(models.Model):
user = models.ForeignKey(User, related_name='user_posts', on_delete=models.CASCADE, null=True, blank=True)
###other fields
和
class PostsMedia(models.Model):
post = models.ForeignKey(Posts, related_name='post_media', on_delete=models.CASCADE, null=True, blank=True)
media = models.URLField(max_length = 500, null=True, blank=True)
您可以为您的
PostsMedia
模型创建一个序列化程序,以允许上传多张图片并保存它们的 URL,因此:
class PostsMediaSerializer(serializers.ModelSerializer):
class Meta:
model = PostsMedia
fields = ('id', 'media')
class PostsSerializer(serializers.ModelSerializer):
post_media = PostsMediaSerializer(many=True, required=False)
class Meta:
model = Posts
fields = ('id', 'user', 'post_media', '__all__')
def create(self, validated_data):
post_media_data = validated_data.pop('post_media', [])
post = super().create(validated_data)
for one_media_data in post_media_data:
PostsMedia.objects.create(post=post, **one_media_data)
return post
create()
方法已用于从验证数据中提取post_media
数据。
注意: django 中的模型不需要添加
作为后缀,因为它是默认包含的。所以最好把s
改成Posts
。Post