django复习笔记2:models
关于models,主要想说的是django shell以及生成测试数据的脚本这两部分。
一个models中的类相当于数据库的一张表,先看一个设置了外键的models。
from django.db import models from django.utils import timezone from django.contrib.auth.models import User class Post(models.Model): author = models.ForeignKey(User) title = models.CharField(max_length=200) text = models.TextField() created_date = models.DateTimeField(default=timezone.now) published_date = models.DateTimeField(blank=True,null=True) # comment = models.CharField(max_length=200) def publish(self): self.published_date = timezone.now() self.save() def __str__(self): return self.title
这里author的外键为User.
1.django shell的使用
sh-3.2# python manage.py shell In [9]: from django.contrib.auth.models import User In [10]: User.objects.create(username='huluwa',password='123456') Out[10]: <User: huluwa> In [11]: user=User.objects.get(username='huluwa') In [12]: from blog.models import Post In [13]: Post.objects.create(username=user,title='tttt',text='test text') In [14]: Post.objects.create(author=user,title='tttt',text='test text') Out[14]: <Post: tttt>
因为使用了外键,所以创建Post时,需要用User的实例来实现。
2.测试数据生成脚本
写了一个简单的测试数据生成脚本每执行一次可生成10条数据。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")跟manage.py中一样就行。django.setup()是使上面设置的环境变量生效。
import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") django.setup() from blog.models import Post from django.contrib.auth.models import User import random import string for i in range(10): add_user = ''.join(random.sample(string.ascii_letters, 4)) title = ''.join(random.sample(string.digits, 10)) text = ''.join(random.sample(string.ascii_letters+string.digits, 20)) User.objects.create(username='%s' %add_user) user = User.objects.get(username='%s' %add_user) post=Post.objects.create(author=user,title = title, text = text) post.publish()
django生成测试数据是很简单的。思路大概就是这样了。生成后可以直接去admin后台检验,相当方便。
随手点进去看看,里面是这样的