python 通过信号自动生成蛞蝓,这里不再需要使用视图,直接在模型中设置即可

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 通过信号自动生成蛞蝓,这里不再需要使用视图,直接在模型中设置即可相关的知识,希望对你有一定的参考价值。

class Product(models.Model):
    title           = models.CharField(max_length=120)
    slug            = models.SlugField(blank=True, unique=True)
    description     = models.TextField()
    price           = models.DecimalField(decimal_places=2, max_digits=20, default=39.99)
    image           = models.ImageField(upload_to=upload_image_path, null=True, blank=True)
    featured        = models.BooleanField(default=False)
    active          = models.BooleanField(default=True)



    objects = ProductManager()

    def __str__(self):
        return self.title

    def __unicode__(self):
        return self.title


def product_pre_save_receiver(sender, instance, *args, **kwargs):
    if not instance.slug:
        # 在实例slug不存在的时候,生成默认slug
        instance.slug = unique_slug_generator(instance)

pre_save.connect(product_pre_save_receiver, sender=Product)
import random
import string

from django.utils.text import slugify


def random_string_generator(size=10, chars=string.ascii_lowercase + string.digits):
    return ''.join(random.choice(chars) for _ in range(size))

def unique_slug_generator(instance, new_slug=None):
    """
    This is for a Django project and it assumes your instance 
    has a model with a slug field and a title character (char) field.
    """
    if new_slug is not None:
        slug = new_slug
    else:
        slug = slugify(instance.title)

    Klass = instance.__class__
    qs_exists = Klass.objects.filter(slug=slug).exists()
    if qs_exists:
        new_slug = "{slug}-{randstr}".format(
                    slug=slug,
                    randstr=random_string_generator(size=4)
                )
        return unique_slug_generator(instance, new_slug=new_slug)
    return slug

以上是关于python 通过信号自动生成蛞蝓,这里不再需要使用视图,直接在模型中设置即可的主要内容,如果未能解决你的问题,请参考以下文章

Python监听串口(RS-232)握手信号

蛞蝓 Django 领域;我们需要这个吗? [复制]

Nginx配置文件详解以及Nginx的启停控制,这里是精华

怎么模拟自动触发触摸电路

在 laravel 5 中使用蛞蝓?

Cakephp URL 蛞蝓问题