django复习笔记2:models

本文详细介绍了如何使用Django shell操作数据库模型,包括创建User和Post实例,以及编写生成测试数据的脚本。通过脚本,可以轻松地在Django应用中创建预设数量的数据记录,便于快速进行功能测试和数据填充。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于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后台检验,相当方便。



随手点进去看看,里面是这样的





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值