0

模型.py


def rand_slug():
    return ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(6))

class Product(models.Model):
    """
    The Product table contining all product items.
    """
  
    title = models.CharField(
        verbose_name=("title"),
        help_text=("Required"),
        max_length=255,
    )
    image = models.ImageField(
        verbose_name=("image"),
        help_text=("Upload a product image"),
        upload_to="rental_equipments",
        default="default-equipment.jpg",
    )
    description = models.TextField(verbose_name=("description"), help_text=("Add a detailed description"), blank=True)
    model = models.CharField(verbose_name=("Model"), max_length=25,null=True)
    serial_number = models.CharField(verbose_name=("Serial Number"),null=True, max_length=25)
    warrenty = models.DateField(verbose_name=("Warrenty Upto"),null=True, max_length=25)
    is_active = models.BooleanField(
        verbose_name=("Post Publically"),
        help_text=("---Remove tick mark and save for later"),
        default=True,
    )
    slug = models.SlugField(max_length=255,unique=True)
    created_at = models.DateTimeField(("Created at"), auto_now_add=True, editable=False)
    updated_at = models.DateTimeField(("Updated at"), auto_now=True)
    posted_user = models.ForeignKey(User, related_name="posted_by", on_delete=models.CASCADE,blank=True, null=True)

    def save(self,  *args, **kwargs):
        super().save(*args, **kwargs)
        img = Image.open(self.image.path)
        img=img.resize((640,480))
        img.save(self.image.path)
        
        if not self.slug:
            self.slug = slugify(rand_slug() + "-" + self.title)
    

在我的 Save 方法中,当我使用不带 slugify 功能的 image-resize 时,它​​工作得很好,同样,不带 image resize 的 slugify 也可以正常工作。为什么两者同时工作?请帮忙!!这个问题困扰了我好几个小时!

4

1 回答 1

0
def save(self,  *args, **kwargs):
        if not self.slug:
            self.slug = slugify(rand_slug() + "-" + self.title)
        super().save(*args, **kwargs)
        img = Image.open(self.image.path)
        img=img.resize((640,480))
        img.save(self.image.path)
        
于 2022-01-28T13:29:10.267 回答