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



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





  • 相关阅读:
    在TreeView控件节点中显示图片
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1146 Topological Order (25 分)
    PAT 甲级 1145 Hashing
    PAT 甲级 1145 Hashing
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1144 The Missing Number (20 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1151 LCA in a Binary Tree (30 分)
    PAT 甲级 1149 Dangerous Goods Packaging
  • 原文地址:https://www.cnblogs.com/alexkn/p/4803751.html
Copyright © 2020-2023  润新知