无法让 Django REST 在模型中保存 POST 对象请求

时间:2021-01-24 19:37:10

标签: python django django-rest-framework

试图允许用户创建一个对象并将其保存在我的模型中。我的前端 POST 请求收到 201 确认响应,因此后端没有回溯错误。数据似乎正在序列化,但未保存在我的模型中。

这是我的代码...

model.py:

class Bucket(models.Model):

    category_options = (
        ('personal', 'Personal'),
        ('social', 'Social'),
    )


    class BucketObjects(models.Manager):
        def get_queryset(self):
            return super().get_queryset()

    owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='buckets')
    admin_user = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='admin_user')
    guest_user = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='guest_user', blank=True)
    category = models.CharField(max_length=30, choices=category_options)
    name = models.CharField(max_length=35)
    created = models.DateTimeField(default=timezone.now, blank=True)
    slug = AutoSlugField(populate_from = "random_string", blank=True) 
    stock_count = models.IntegerField(blank=True, null=True)
    stock_list = ArrayField(models.CharField(max_length=6,null=True),size=30,null=True, blank=True)
    about = models.CharField(max_length=200)

    objects = models.Manager()
    bucketobjects = BucketObjects()

    class Meta:
        ordering = ('-created',)

    def save(self, *args, **kwargs):
        if self.stock_list:
            self.stock_count = len(self.stock_list)
            super().save(*args, **kwargs)

serializer.py:

class BucketCreateSerializer(serializers.ModelSerializer):
    class Meta:
        model = Bucket
        fields = ('owner','category','name','about')
        read_only_fields = ['owner']
    
    def create(self, validated_data):
        user = self.context['request'].user
        bucket = Bucket.objects.create(
         owner=user, 
         **validated_data
        )
        bucket.save()
        return bucket

view.py:

class CreateBucket(generics.CreateAPIView):
    permission_classes = [IsAuthenticated]
    serializer_class = BucketCreateSerializer
    queryset = Bucket.objects.all()

我该如何解决这个问题?

0 个答案:

没有答案