首页 > 解决方案 > 如何使用 Django BinaryField 和 Postgresql Bytea 与 Django Rest Framework 插入图像?

问题描述

我想将图像插入数据库。

我在模型中使用 Django Rest Framework 和 Django BinaryField 并使用 Postgresql Bytea 数据类型。

这是我的代码:

模型.py

class Question(models.Model):
    question_id = models.BigAutoField(primary_key=True)
    question = models.TextField(default=None, null=True)
    question_picture = models.BinaryField(default=None, null=True)
    answer = models.CharField(max_length=255)
    mc_a = models.CharField(max_length=255)
    mc_b = models.CharField(max_length=255)
    mc_c = models.CharField(max_length=255)

    class Meta:
        managed = True
        db_table = 'question'

    def __str__(self):
        return self.question

序列化程序.py

class QuestionSerializer(serializers.ModelSerializer):

    class Meta:
        model = Question
        fields = ('question_id',
                  'question',
                  'question_picture',
                  'answer',
                  'mc_a',
                  'mc_b',
                  'mc_c')

视图.py

@api_view(['POST'])
def question_list(request):
    if request.method == 'POST':
            question_data = JSONParser().parse(request)
            questions_serializer = QuestionSerializer(data=question_data)
            if questions_serializer.is_valid():
                questions_serializer.save()
                return JsonResponse(questions_serializer.data, status=status.HTTP_201_CREATED) 
            return JsonResponse(questions_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

使用上面我尝试运行以插入数据的代码。当我检查数据库时,question_picture数据(图像)为,但其他数据已填充。

如何插入图像以便将其存储在数据库中?

标签: pythondjangopostgresqldjango-rest-frameworkbytea

解决方案


你如何将图像发送到 Django?(Base64?)。

我认为这个线程类似于你的Serialize binary field django rest framework


推荐阅读