<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>3 on 中二青年</title>
    <link>https://zhong-er.com/tags/3/</link>
    <description>Recent content in 3 on 中二青年</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 20 Sep 2019 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://zhong-er.com/tags/3/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>【Django】ORM中常用字段和参数</title>
      <link>https://zhong-er.com/posts/djangoorm%E4%B8%AD%E5%B8%B8%E7%94%A8%E5%AD%97%E6%AE%B5%E5%92%8C%E5%8F%82%E6%95%B0/</link>
      <pubDate>Fri, 20 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://zhong-er.com/posts/djangoorm%E4%B8%AD%E5%B8%B8%E7%94%A8%E5%AD%97%E6%AE%B5%E5%92%8C%E5%8F%82%E6%95%B0/</guid>
      <description>&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://zhong-er.com/assets/201909169981_9838.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;常用字段&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;常见字段&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AutoField&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;int自增列，必须填入参数primary_key=True。当model中如果没有自增列，则会自动创建一个列名为id的列。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IntegerField&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;一个整数类型，范围在-214748368to214748367。(一般不用它来存手机号，位数也不够，直接用字符串存)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CharField&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;字符类型，必须提供max_length参数，max_length表示字符长度。&lt;/p&gt;
&lt;p&gt;这里需要知道的是Django中的CharField对应的MySQL数据库中的varchar类型，没有设置对应char类型的字段，但是Django允许我们自定义新的字段，下面我们来自定义对应于数据库的char类型&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;1.png&#34; loading=&#34;lazy&#34; src=&#34;https://zhong-er.com/assets/201909207986_7402.png-zhonger.com&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EmailField()&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;varchar(254)内部是个varchar字段**&lt;br&gt;
**&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BooleanField(Field)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;is_delete = BooleanField()&lt;/p&gt;
&lt;p&gt;给该字段传值的时候 你只需要传布尔值即可&lt;/p&gt;
&lt;p&gt;但是对应到数据库 它存的是0和1&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TextField(Field)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- 文本类型&lt;/p&gt;
&lt;p&gt;用来存大段文本&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FileField(Field)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;- 字符串，路径保存在数据库，文件上传到指定目录&lt;/p&gt;
&lt;p&gt;- 参数：&lt;/p&gt;
&lt;p&gt;upload_to = &amp;quot;&amp;quot; 用户上传的文件会自动放到等号后面指定的文件路径中&lt;/p&gt;
&lt;p&gt;storage = None 存储组件，默django.core.files.storage.FileSystemStorage&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;自定义char字段&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;from django.db import models

# Create your models here.
#Django中没有对应的char类型字段，但是我们可以自己创建
class FixCharField(models.Field):
    &#39;&#39;&#39;
    自定义的char类型的字段类
    &#39;&#39;&#39;
    def __init__(self,max_length,*args,**kwargs):
        self.max_length=max_length
        super().__init__(max_length=max_length,*args,**kwargs)

    def db_type(self, connection):
        &#39;&#39;&#39;
        限定生成的数据库表字段类型char，长度为max_length指定的值
        :param connection:
        :return:
        &#39;&#39;&#39;
        return &#39;char(%s)&#39;%self.max_length
#应用上面自定义的char类型
class Class(models.Model):
    id=models.AutoField(primary_key=True)
    title=models.CharField(max_length=32)
    class_name=FixCharField(max_length=16)
    gender_choice=((1,&#39;男&#39;),(2,&#39;女&#39;),(3,&#39;保密&#39;))
    gender=models.SmallIntegerField(choices=gender_choice,default=3)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;DateField&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
