首页 > 其他分享 >Dajngo开发常见问题汇总 -- Model设计篇

Dajngo开发常见问题汇总 -- Model设计篇

时间:2023-02-06 19:22:15浏览次数:54  
标签:常见问题 name -- models user Model True model verbose

  1. verbose_name 可以作为第一个参数传入,使书写更加工整和有序;
name = models.CharField('类别名',default="", max_length=30,help_text="类别名")
  1. 请尽量为每个model和field设置 verbose_name,也尽量为每个model实现__str__方法,便于项目的文档化管理;
class Meta:
    verbose_name = '商品轮播'
    verbose_name_plural = verbose_name

def __str__(self):
    return self.goods.name
  1. null=True, blank=True 一般同时出现,前者表示数据库字段可以为null,后者表示form中required = False,即可以为空白;
birthday = models.DateField("出生年月",null=True, blank=True)
  1. 使用unique参数添加‘唯一约束’;
order_sn = models.CharField("订单编号",max_length=30, null=True, blank=True, unique=True)

class Meta:
    verbose_name = '用户收藏'
    verbose_name_plural = verbose_name
    unique_together = ("user", "goods")
  1. 外键需要设置 on_delete=models.CASCADE,表示级联删除(默认);
category = models.ForeignKey(GoodsCategory, on_delete=models.CASCADE, verbose_name="商品类目")
  1. 利用类似 get_user_model 的方法来实现Model之间的解耦;
# get_user_model方法会去setting中找AUTH_USER_MODEL
from django.contrib.auth import get_user_model
User = get_user_model()
  1. related_name 可以为外键反向查询的manager命名;
goods = models.ForeignKey(Goods, on_delete=models.CASCADE, verbose_name="商品", related_name="images")
  1. 无论USE_TZ is False/True,请尽量使用django.utils.timezone.now(),当然更好的方法是使用 auto_now/auto_now_add = True;
add_time = models.DateTimeField(default=timezone.now, verbose_name="添加时间")
  1. 请将MySQL的数据库存储引擎设置为INNODB;
"OPTIONS":{"init_command":"SET default_storage_engine=INNODB;"

PS:


标签:常见问题,name,--,models,user,Model,True,model,verbose
From: https://www.cnblogs.com/echo1937/p/17096473.html

相关文章

  • Ansible的部署和命令模块
    一、ansible的概述1.1ansible简介Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们不......
  • csci 体系结构设计怎么写
    ComputerSoftwareConfigurationItem 计算机软件配置项  参考文献:计算机软件配置项csci-百度文库(baidu.com)说人话:软件产品的各个组成部分,细分到xx模块 ......
  • React中使用路由
     安装:npminstallreact-router-domlocalforagematch-sortersort-by 声明router当安装好路由后就需要在main.js中声明以便可以引入importrouterfrom"./ro......
  • JavaScript国际化API
    JavaScript国际化API前言:英语是世界上使用最广泛的语言,但只有七分之一的人说英语。它是3.79亿人口的第一种(母语)语言,但是有9.17亿人说普通话,4.6亿人说西班牙语和3.41亿人......
  • 【转】Is there a better dependency injection pattern in golang?
     https://coolshell.cn/articles/9949.html https://dotblogs.com.tw/daniel/2018/01/17/140435 https://github.com/golobby/container https://blog.drewolson.......
  • klipper安装调试
    烧录系统镜像软件:balenaEtcher-Portable-1.13.1串口连接香橙派的串口终端:MobaXterm_Personal_22.3切片:Simplify3Dx_v4.1连接wifi:nmtui;WIFI连接成功后会在已连接的WIFI......
  • RuntimeError: element 0 of tensors does not require grad and does not have a gra
        报错如下: 原因:这里的loss默认的requires_grad是False,因此在backward()处不会计算梯度,导致出错方法:将loss的requires_grad属性设为True,如下所示: ......
  • SpringBoot+MyBatis的动态SQL、使用动态SQL时List传值错误解决方案
    目录实现动态SQL的四种方式:1、XML配置2、脚本SQL3、在方法中构建SQL4、结构化SQL关于动态SQL的List传值错误问题1、错误代码2、解决错误实现动态SQL的四种方式:1、XML配置......
  • 使用popup.remove()仍然不能移除popup的原因
    今天遇到一个问题  添加完popup之后 想要移除popup,,然后使用popup.remove这个方法还是不管用,popup.remove()后还是会有一个空白的popup在页面上。博主高考语文不及格......
  • 一文带你看透天气预报
    天气预报是气象台(站)预先发出关于未来一定时期内的天气变化和趋势的报告。气象台运用现代科学技术(如卫星、雷达等)收集了全国甚至全世界的气象资料,根据天气演变规律,进行......