• faker 生成模拟数据


    Django中使用faker 构建测试数据库

    Django 的 Model:

    from django.db import models
    
    # Create your models here.
    
    __allModel__ = [
            'Tag',
            'Category',
            'Post',
            ]
    
    #Post vs Tag: mtm
    #Post vs Category: mto
    
    class Tag(models.Model):
        name = models.CharField(max_length = 50)
    
        def __str__(self):
            return self.name
    
    class Category(models.Model):
        name = models.CharField(max_length = 50)
    
        def __str__(self):
            return self.name
    
    class Post(models.Model):
    
        class Meta:
            ordering = ['-pub_date']
    
    
    
    
        title = models.CharField(max_length = 100) # 博客标题
        body  = models.TextField()
        pub_date = models.DateTimeField()
        mod_date = models.DateTimeField()
        number_of_comments = models.IntegerField()
        rating = models.IntegerField()
    
        tags = models.ManyToManyField(Tag)
        category= models.ForeignKey(Category,on_delete=models.CASCADE)
    
        def __str__(self):
            return self.title
    View Code

    Faker 脚本:

    import os 
    import django
    import sys 
    
    back = os.path.dirname
    BASE_DIR = back(back(os.path.abspath(__file__)))
    sys.path.append(BASE_DIR)
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE','mysite01.settings')
    django.setup()
    
    if __name__ == '__main__':
        from blogs import models as blogs_models
        from django.utils import timezone
        import faker
        from datetime import timedelta
    
    
    
    
    
        if 0 == 0: # faker 构造数据
            fake_en = faker.Faker() # english 
            #fake_cn = faker.Faker('zh_CN') # 中文
            for _ in range(100): # 随机生成100 篇 Post 
                title = fake_en.sentence().rstrip('.')
                body = '
    '.join(fake_en.paragraphs(20))
    
                pub_date = fake_en.date_time_between(
                        start_date = '-1y',
                        end_date = 'now',
                        tzinfo = timezone.get_current_timezone(),
                        )
    
                number_of_comments = fake_en.random_int()
                rating = fake_en.random_int() # 0 - 9999 的随机数
    
                tags = blogs_models.Tag.objects.order_by('?')
                tag1 = tags.first()
                tag2 = tags.last() 
    
                category = blogs_models.Category.objects.order_by('?').first()
    
                blog = blogs_models.Post.objects.create(
                        title = title,
                        body = body,
                        pub_date = pub_date,
                        mod_date = pub_date,
                        number_of_comments = number_of_comments,
                        rating = rating,
                        category = category,
                        )
                blog.tags.set([tag1,tag2])
    Django 外Python脚本

           

    这样更方便测试,也更好的验证一些知识点,

    参考:

    https://www.cnblogs.com/blueteer/p/10277725.html

  • 相关阅读:
    yum 安装的软件包卸载
    yum install 软件包的安装路径
    mysqladmin connect to server at 'localhost' failed
    Mysql导入报错 ERROR 1231(42000)
    my.cnf文件格式错误1例
    CVE-2020-11996
    NG ZOORO对于disabled的按钮或者类容添加toolTip提示
    Angular2管道在模板和component.ts中的使用
    NG ZOORO下拉框添加hover提示toolTip功能
    关于Angular项目结构中share文件与public文件的区别
  • 原文地址:https://www.cnblogs.com/zach0812/p/13793016.html
Copyright © 2020-2023  润新知