django_models_字段一

字段选项

  null如果为True,Django将在数据库中把空值存储为NULL。 默认为False

  blank如果为True,该字段允许为空值, 默认为False

  要注意,这与 null 不同。 null纯粹是数据库范畴,指数据库中字段内容是否允许为空,而 blank 是表单数据输入验证范畴的。 如果一个字段的blank=True,表单的验证将允许输入一个空值。 如果字段的blank=False,该字段就是必填的。

 

  choices由二项元组构成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。 如果设置了choices ,默认的表单将是一个选择框而不是标准的文本框,而且这个选择框的选项就是choices 中的选项。

这是一个关于 choices 列表的例子:

YEAR_IN_SCHOOL_CHOICES = (
    ('FR', 'Freshman'),
    ('SO', 'Sophomore'),
    ('JR', 'Junior'),
    ('SR', 'Senior'),
    ('GR', 'Graduate'),
)

每个元组中的第一个元素是将被存储在数据库中的值。 第二个元素将由默认窗体小部件或ModelChoiceField显示。 给定一个模型实例,可以使用get_FOO_display()方法来访问选项字段的显示值。 例如:

from django.db import models

class Person(models.Model):
    SHIRT_SIZES = (
        ('S', 'Small'),
        ('M', 'Medium'),
        ('L', 'Large'),
    )
    name = models.CharField(max_length=60)
    shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)

>>> p = Person(name="Fred Flintstone", shirt_size="L") >>> p.save() >>> p.shirt_size 'L' >>> p.get_shirt_size_display() 'Large'

       default字段的默认值。 可以是一个值或者可调用对象。 如果可调用 ,每个新对象创建时它都会被调用。

  help_text表单部件额外显示的帮助内容。 即使字段不在表单中使用,它对生成文档也很有用。

  primary_key如果为True,那么这个字段就是模型的主键。

       如果你没有指定任何一个字段的primary_key=True,Django 就会自动添加一个IntegerField 字段做为主键,所以除非你想覆盖默认的主键行为,否则没必要设置任何一个字段的primary_key=True。 详见字段生成主键字段

  主键字段是只读的。 如果你在一个已存在的对象上面更改主键的值并且保存,一个新的对象将会在原有对象之外创建出来。 例如:

  

from django.db import models

class Fruit(models.Model):
    name = models.CharField(max_length=100, primary_key=True)



>>> fruit = Fruit.objects.create(name='Apple')
>>> fruit.name = 'Pear'
>>> fruit.save()
>>> Fruit.objects.values_list('name', flat=True)
<QuerySet ['Apple', 'Pear']>

  unique如果为True, 则这个字段在整张表中必须是唯一的。

自动主键字段
默认情况下,Django 会给每个模型添加下面这个字段: id
= models.AutoField(primary_key=True) 这是一个自增主键字段。 如果你想指定一个自定义主键字段,只要在某个字段上指定 primary_key=True 即可。 如果 Django 看到你显式地设置了 Field.primary_key,就不会自动添加 id 列。 每个模型只能有一个字段指定primary_key=True(无论是显式声明还是自动添加)。

 

字段的自述名¶
除ForeignKey、ManyToManyField 和 OneToOneField 之外,每个字段类型都接受一个可选的位置参数(在第一的位置) — 字段的自述名。 如果没有给定自述名,Django 将根据字段的属性名称自动创建自述名 —— 将属性名称的下划线替换成空格。 在这个例子中,自述名是
"person's first name": first_name = models.CharField("person's first name", max_length=30) 在这个例子中,自述名是 "first name": first_name = models.CharField(max_length=30) ForeignKey、ManyToManyField 和 OneToOneField 都要求第一个参数是一个模型类,所以要使用 verbose_name 关键字参数才能指定自述名: poll = models.ForeignKey( Poll, on_delete=models.CASCADE, verbose_name="the related poll", ) sites = models.ManyToManyField(Site, verbose_name="list of sites") place = models.OneToOneField( Place, on_delete=models.CASCADE, verbose_name="related place", )
习惯上,verbose_name 的首字母不用大写。 Django 在必要的时候会自动大写首字母。

 这些仅仅是常用字段的简短介绍, 要了解详细内容,请查看通用模型字段选项参考

原文地址:https://www.cnblogs.com/Xingtxx/p/11009795.html