首页 > 编程 > Python > 正文

Django中Model的使用方法教程

2020-02-22 23:22:34
字体:
来源:转载
供稿:网友

前言

本文主要给大家介绍了关于Django中Model使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

创建模型

使用Django的模型主要注意两个方面:字段的类型和方法的重写。这里用一个例子来说明,其中包含了常用的字段类型和如何重写方法。

from django.db import modelsclass School(models.Model): passclass Message(models.Model): passclass Teacher(models.Model): pass class Student(models.Model): GENDER_CHOICES = (  ('male', "男"),  ('female', "女"),  ('secret', "保密") ) name = models.CharField(max_length=40, blank=True, verbose_name="姓名") gender = models.CharField(max_length=6, choices=GENDER_CHOICES, default="secret", verbose_name="性别") age = models.IntegerField(default=0, verbose_name="年龄") rank = models.PositiveIntegerField(default=1, verbose_name="排名", unique=True) discount = models.DecimalField(max_digits=3, decimal_places=2, verbose_name="折扣", default=1.0) school = models.ForeignKey(to=School, verbose_name="学校", on_delete=models.CASCADE) message = models.OneToOneField(to=Message, verbose_name="信息", on_delete=models.CASCADE) teacher = models.ManyToManyField(verbose_name="老师", to=Teacher, blank=True) introduce = models.TextField(blank=True, verbose_name="介绍") grade = models.FloatField(default=0.0, verbose_name="成绩") url = models.URLField(verbose_name="个人主页", max_length=100) email = models.EmailField(verbose_name="邮箱") image = models.ImageField(upload_to='img/%Y/%m/%d/', verbose_name='上传图片', null=True) file = models.FileField(upload_to="file/%Y/%m/%d/", verbose_name="上传文件", blank=True) is_deleted = models.BooleanField(verbose_name="已删除", default=False, blank=True) time_added = models.DateTimeField(verbose_name="添加时间", auto_now_add=True, blank=True) def delete(self, using=None, keep_parents=False):  self.is_deleted = True  # some actions  self.save() def save(self, force_insert=False, force_update=False, using=None,    update_fields=None):  # some actions  self.name = self.name.capitalize() # 首字母大写  return super().save(force_insert=force_insert, force_update=force_update, using=using,       update_fields=update_fields) def __repr__(self):  return "UserProfile:{}".format(self.name) def __str__(self):  return self.name class Meta:  ordering = ['-time_added']  verbose_name = "用户信息"  verbose_name_plural = verbose_name  db_table = "student_info"

字段类型

这里对常见字段中值得注意的地方作一下说明。

CharField

字符串类型值得注意的是当该字段只能在是某些指定的值时,要使用choices参数来指向预先设定的值。

IntergerField & PositiveIntegerField

整数类型和正整数类型。

DecimalField

十进制浮点数,其中,参数max_digits代表数字有多少位,decimal_places代表小数部分有多少位。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表