У объекта 'DemoAppProductUpdateDestroySerializer' нет атрибута 'get_image' - PullRequest
0 голосов
/ 30 января 2020

У объекта 'DemoAppProductUpdateDestroySerializer' нет атрибута 'get_image'.

Я получаю сообщение об ошибке: у объекта 'DemoAppProductUpdateDestroySerializer' нет атрибута 'get_image'. приветствуется любая помощь.

У объекта 'DemoAppProductUpdateDestroySerializer' нет атрибута 'get_image'

models.py

class Product(models.Model):
    title = models.CharField(max_length=30)
    slug= models.SlugField(blank=True, null=True)
    sku = models.CharField(max_length=30)
    description = models.TextField(max_length=200, null=True, blank=True)
    instruction = models.TextField(max_length=200, null=True, blank=True)
    price = models.DecimalField(decimal_places=2, max_digits= 10,)
    discount_price= models.DecimalField(decimal_places=2, max_digits= 10, null=True, blank=True)

    brand = models.ForeignKey("Brand", null=True, blank=True,  on_delete=models.CASCADE)
    waist = models.ForeignKey("Waist", null=True, blank=True,  on_delete=models.CASCADE)
    occasion = models.ForeignKey("Occasion", null=True, blank=True,  on_delete=models.CASCADE)
    style = models.ForeignKey("Style", null=True, blank=True,  on_delete=models.CASCADE)
    neck = models.ForeignKey("Neck", null=True, blank=True,  on_delete=models.CASCADE)
    fit = models.ForeignKey("Fit", null=True, blank=True,  on_delete=models.CASCADE)

    pattern_type = models.ForeignKey("Pattern_Type", null=True, blank=True,  on_delete=models.CASCADE)
    color = models.ForeignKey("Color", null=True, blank=True, on_delete=models.CASCADE)
    size = models.ManyToManyField("Size", null=True, blank=True)
    sleeve = models.ForeignKey("Sleeve_Length", null=True, blank=True, on_delete=models.CASCADE)
    material = models.ForeignKey("Material", null=True, blank=True, on_delete=models.CASCADE)

    category = models.ManyToManyField('Category', )
    default = models.ForeignKey('Category', related_name='default_category', null=True, blank=True, on_delete=models.CASCADE)

    created_on = models.DateTimeField(default=timezone.now)
    updated_on = models.DateTimeField(null=True, blank=True)
    status = models.BooleanField(default=True)


    class Meta:
        ordering = ["-id"]

    def __str__(self): #def __str__(self):
        return self.title 

    def get_absolute_url(self):
        return reverse("product_detail", kwargs={"pk": self.pk})


    def get_image_url(self):
        img = self.productimage_set.first()
        if img:
            return img.image.url
        return img #None


def pre_save_post_receiver(sender, instance, *args, **kwargs):
    if not instance.slug:
        instance.slug = unique_slug_generator(instance)

pre_save.connect(pre_save_post_receiver, sender=Product)


def image_upload_to(instance, filename):
    title = instance.product.title
    slug = slugify(title)
    basename, file_extension = filename.split(".")
    new_filename = "%s-%s.%s" %(slug, instance.id, file_extension)
    return "products/%s/%s" %(slug, new_filename)


class ProductImage(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    image = models.ImageField(upload_to=image_upload_to)
    created_on = models.DateTimeField(default=timezone.now)
    status = models.BooleanField(default=True)

    def __unicode__(self):
        return self.product.title

views.py

class ProductUpdateDestroyAPIView(generics.RetrieveUpdateDestroyAPIView):
    model = Product
    queryset = Product.objects.all()
    serializer_class = DemoAppProductUpdateDestroySerializer
    permission_classes = [IsAdminUser]
    authentication_classes = [BasicAuthentication]

serializers.py

class DemoAppProductUpdateDestroySerializer(serializers.ModelSerializer):

    image = serializers.SerializerMethodField()
    class Meta:
        model = Product
        fields=[
                "id",
                "title",
                "slug",
                "sku",
                "price",
                "discount_price",
                "image",
        ]

        def get_image(self, obj):
            return obj.productimage_set.first().image.url

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...