Django中使用faker 构建测试数据库
Django 的 Model:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
Faker 脚本:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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])
这样更方便测试,也更好的验证一些知识点,
参考: