添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


字段选项¶

Field.null¶

如果True,Django将将空值存储为NULL在数据库里。默认值是False.

避免使用null基于字符串的字段,如CharField和TextField…如果基于字符串的字段具有null=True,这意味着它对于“无数据”有两个可能的值:NULL还有空的绳子。在大多数情况下,“no data”有两个可能的值是多余的;Django约定是使用空字符串,而不是使用空字符串NULL…一个例外是当CharField两者都有u​ ​nique=True和blank=True​ ​准备好了。在这种情况下,null=True保存具有空值的多个对象时,需要避免唯一的约束冲突。

对于基于字符串的字段和非基于字符串的字段,还需要设置blank=True如果希望允许窗体中的空值,如null参数只影响数据库存储(请参阅blank).

注解
使用Oracle数据库后端时,NULL将被存储以表示空字符串,而不考虑此属性。

blank¶

如果True,允许字段为空白。默认值是False.

请注意,这与null. null纯粹与数据库相关,而​ ​blank与验证有关。​ ​如果字段有blank=True,表单验证将允许输入空值。如果字段有blank=False,这将是需要的。

choices¶

Field.choices¶
一种可迭代的(例如,一个或多个元组),由两个项目的可迭代性组成。[(A, B), (A, B) …])用作此字段的选择。如果提供了选择,则由模型验证默认的表单小部件将是带有这些选项的选择框,而不是标准文本字段。

每个元组中的第一个元素是要在模型上设置的实际值,第二个元素是可读的名称。例如:

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

通常,最好在模型类中定义选择,并为每个值定义一个适当命名的常量:

from django.db import models

class Student(models.Model):
FRESHMAN = 'FR'
SOPHOMORE = 'SO'
JUNIOR = 'JR'
SENIOR = 'SR'
YEAR_IN_SCHOOL_CHOICES = (
(FRESHMAN, 'Freshman'),
(SOPHOMORE, 'Sophomore'),
(JUNIOR, 'Junior'),
(SENIOR, 'Senior'),
)
year_in_school = models.CharField(
max_length=2,
choices=YEAR_IN_SCHOOL_CHOICES,
default=FRESHMAN,
)

def is_upperclass(self):
return self.year_in_school in (self.JUNIOR, self.SENIOR)

虽然您可以在模型类之外定义一个选择列表,然后再引用它,但是在模型类中定义每个选项的选择和名称会将所有这些信息保存在使用它的类中,并使这些选择易于引用

还可以将可用的选择收集到指定的组中,这些组可用于组织目的:

MEDIA_CHOICES = (
('Audio', (
('vinyl', 'Vinyl'),
('cd', 'CD'),
)
),
('Video', (
('vhs', 'VHS Tape'),
('dvd', 'DVD'),
)
),
('unknown', 'Unknown'),
)

每个元组中的第一个元素是要应用于组的名称。第二个元素是一个由两个元组组成的可迭代元素,每个二元元组包含一个值和一个选项的人类可读的名称。分组选项可以与单个列表中的未分组选项(例如未知数选项)。

对于每个模型字段choices设置,Django将添加一个方法来检索字段当前值的可读的名称。看见​ ​get_FOO_display()​ ​在数据库API文档中。

注意,选项可以是任何可迭代对象–不一定是列表或元组。这允许您动态地构造选择。但如果你发现自己是黑客choices要想保持动态,最好使用适当的数据库表ForeignKey. choices用于静态数据,如果有的话,这些数据不会发生太大的变化。

除非blank=False设置在字段中,并将其设置为default然后是一个标签"---------"将使用复选框呈现。若要重写此行为,请向choices含None;(None, ‘Your String For Display’)…或者,您可以使用空字符串代替None这是有意义的–例如在CharField.

db_column¶

Field.db_column¶

要用于此字段的数据库列的名称。如果没有给出,Django将使用该字段的名称。

如果您的数据库列名是SQL保留字,或者包含Python变量名(特别是连字符)中不允许的字符,则没关系。Django在幕后引用列和表名。

db_index¶

Field.db_index¶

如果True,将为该字段创建数据库索引。

db_tablespace¶

Field.db_tablespace¶
的名称数据库表空间若要对此字段的索引进行索引,请执行以下操作。缺省值是项目的​​ ​DEFAULT_INDEX_TABLESPACE​ ​设置,如果已设置,则设置db_tablespace如果有的话。如果后端不支持索引的表空间,则忽略此选项。

default¶

Field.default¶
​​ ​字段的默认值。​ ​这可以是一个值,也可以是一个可调用的对象。如果是可调用的,则每次创建新对象时都会调用它。

默认值不能是可变对象(模型实例,list, set,作为对该对象的同一个实例的引用,将在所有新的模型实例中用作默认值。相反,将所需的默认值包装为可调用的。例如,​ ​如果要指定默认值dict为JSONField,​ ​使用以下功能:

def contact_default():
return {"email": "to1@example.com"}
contact_info = JSONField("ContactInfo", default=contact_default)

lambdaS不能用于字段选项,如default因为他们不可能按迁移序列化…请参阅文档中的其他注意事项。

对于像这样的领域ForeignKey该映射到模型实例,默认值应该是它们引用的字段的值(pk除非to_field而不是模型实例。

当创建新的模型实例并且没有为该字段提供值时,将使用默认值。当字段是主键时,当字段设置为None.

editable¶

Field.editable¶
如果False,该字段将不会显示在管理员或任何其他ModelForm…它们也会在模型验证…默认值是True.

error_messages¶

Field.error_messages¶
这个error_messages参数使您可以重写字段将引发的默认消息。输入具有匹配要重写的错误消息的键的字典。

错误消息键包括​ ​null, blank, invalid, invalid_choice, unique,​ ​和unique_for_date…中的每个字段指定其他错误消息键。字段类型下面一节。

这些错误消息通常不会传播到窗体。看见有关模型的错误消息的注意事项.

help_text¶

Field.help_text¶
​​ ​与表单小部件一起显示的额外“帮助”文本。​ ​即使您的字段没有在表单上使用,它对于文档也很有用。

请注意,此值为不HTML-以自动生成的形式转义。这使您可以将HTML包含在help_text如果你如此渴望。例如:

help_text="Please use the following format: <em>YYYY-MM-DD</em>."

或者,您可以使用纯文本和​ ​django.utils.html.escape()​ ​以转义任何HTML特殊字符。确保您避免了来自不受信任用户的任何帮助文本,以避免跨站点脚本攻击。

primary_key¶

Field.primary_key¶

如果True,此字段是模型的主键。

如果不指定primary_key=True对于模型中的任何字段,Django将自动添加AutoField以保持主键,因此不需要设置primary_key=True在任何字段上,除非要覆盖默认的主键行为。有关更多信息,请参见自动设置主键.

primary_key=True暗示null=False和unique=True…对象上只允许一个主键。

主键字段是只读的.如果更改现有对象上主键的值,然后保存它,则将在旧对象旁边创建一个新对象。

unique¶

Field.unique¶

如果True,此字段在整个表中必须是唯一的。

这是在数据库级别和模型验证中强制执行的。如果试图将具有重复值的模型保存在unique菲尔德,adjango.db.IntegrityError将由模型的save()方法。

此选项对除ManyToManyField和OneToOneField.
注意,​​ ​当unique是True,您不需要指定db_index,因为unique意味着创建索引。​

unique_for_date¶

Field.unique_for_date¶
​​ ​将此设置为DateField或DateTimeField若要要求此字段对于日期字段的值是唯一的,请执行以下操作​ ​。

例如,如果您有一个字段title有unique_for_date=“pub_date”,则Django不允许输入两个具有相同记录的记录。title和pub_date.

注意,如果将此设置为指向DateTimeField,将只考虑字段的日期部分。另外,什么时候USE_TZ是True,检查将在当前时区在保存对象时。

这是由​ ​Model.validate_unique()​ ​在模型验证期间,而不是在数据库级别。如果有的话unique_for_date约束涉及的字段不是ModelForm(例如,如果其中一个字段列在exclude或有editable=False), Model.validate_unique()将跳过该特定约束的验证。

unique_for_month¶

Field.unique_for_month¶
喜欢unique_for_date,但要求字段在月份方面是独特的。

unique_for_year¶

Field.unique_for_year¶
喜欢unique_for_date和unique_for_month.

verbose_name¶

Field.verbose_name¶
​​ ​该字段的可读的名称。​ ​如果没有给出详细的名称,Django将使用字段的属性名自动创建它,将下划线转换为空格。看见详细字段名.

validators¶

Field.validators¶
​​ ​要为该字段运行的验证器列表。​ ​见验证器文档想了解更多信息。

注册和获取查找¶
Field实现查找注册API…API可用于自定义字段类可用的查找,以及如何从字段中获取查找。

字段类型¶

AutoField¶

班级AutoField(*备选方案)[源代码]¶
阿IntegerField根据​​ ​可用ID自动递增。​ ​您通常不需要直接使用它;如果不指定其他内容,主键字段将自动添加到您的模型中。看见自动设置主键.

BigAutoField¶

班级BigAutoField(*备选方案)[源代码]¶
64位整数,非常类似于AutoField除了保证它符合1到9223372036854775807.

BigIntegerField¶

班级BigIntegerField(*备选方案)[源代码]¶
64位整数,非常类似于IntegerField除了保证它符合-9223372036854775808到9223372036854775807…此字段的默认窗体小部件是TextInput.

BinaryField¶

班级BinaryField(最大长度=无, *备选方案)[源代码]¶
存储原始二进制数据的字段。它可以被分配bytes, bytearray,或memoryview.

默认情况下,BinaryField集editable到False,在这种情况下,它不能包含在ModelForm.

更改为Django 2.1:
旧版本不允许设置editable到True.

BinaryField有一个额外的可选参数:

BinaryField.max_length¶

字段的最大长度(以字符为单位)。最大长度在Django的验证中使用MaxLengthValidator.

滥用职权BinaryField

尽管您可能会考虑将文件存储在数据库中,但是在99%的情况下,考虑到这是错误的设计。这个字段是不适当的替代物静态文件处理。

BooleanField¶

班级BooleanField(*备选方案)[源代码]¶
​​ ​真[假]字段​ ​。

此字段的默认窗体小部件为CheckboxInput,或NullBooleanSelect如果null=True.

的默认值BooleanField是None什么时候Field.default没有定义。

更改为Django 2.1:
在旧版本中,此字段不允许null=True所以你必须用NullBooleanField相反。现在不鼓励使用后者,因为它可能在Django的未来版本中被废弃。

CharField¶

CharField(最大长度=无, *备选方案)[源代码]¶
​​ ​字符串字段,用于小到大的字符串​ ​​。
​​ ​对于大量的文本,请使用TextField​ ​​.
此字段的默认窗体小部件是TextInput.
CharField有一个额外的必要的论点:
​​ ​CharField.max_length​ ​​¶
字段的最大长度(以字符为单位)。最大长度在数据库级别强制执行,在Django的验证中使用MaxLengthValidator.

注解

如果您正在编写一个必须可移植到多个数据库后端的应用程序,您应该注意到max_length为了一些后端。参考数据库后端注释关于细节。

DateField¶

DateField(AUTO_NOW=FALSE, AUTO_NOW_ADD=FALSE, *备选方案)[源代码]¶
日期,以Python表示,由datetime.date举个例子。有一些额外的、可选的参数:
​​ ​DateField.auto_now​ ​​¶
每次保存对象时,自动将字段设置为现在。适用于“上一次修改”时间戳。请注意,当前日期是总已使用;它不仅仅是可以重写的默认值。

字段只有在调用时才会自动更新。Model.save()…在以其他方式更新其他字段时,不会更新该字段,例如QuerySet.update(),尽管您可以在这样的更新中为字段指定一个自定义值。

​DateField.auto_now_add​ ​​¶
在第一次创建对象时自动将字段设置为现在。用于创建时间戳。请注意,当前日期是总已使用;它不仅仅是可以重写的默认值。因此,即使在创建对象时设置此字段的值,它也将被忽略。如果希望能够修改此字段,请设置以下内容,而不是​​ ​auto_now_add=True​ ​:

为DateField: default=date.today-来自datetime.date.today()
为DateTimeField: default=timezone.now-来自django.utils.timezone.now()
此字段的默认窗体小部件是TextInput…管理员添加了一个JavaScript日历和一个“今天”的快捷方式。包括额外的invalid_date错误信息键。

选择auto_now_add, auto_now,和default是相互排斥的。这些选项的任何组合都会导致错误。

注解
当前已实现,设置auto_now或auto_now_add到True会导致这个领域editable=False和blank=True准备好了。

注解
这个auto_now和auto_now_add选项将始终使用默认时区在创造或更新的时刻。如果您需要不同的东西,您可以考虑使用您自己的可调用默认值或重写。save()而不是使用auto_now或auto_now_add;或使用DateTimeField而不是DateField并决定如何在显示时处理从日期时间到日期的转换。

DateTimeField¶

班级DateTimeField(AUTO_NOW=FALSE, AUTO_NOW_ADD=FALSE, *备选方案)[源代码]¶
日期和时间,以Python表示,由datetime.datetime举个例子。采取相同的额外参数DateField.

此字段的默认表单小部件是一个TextInput…管理员使用两个单独的TextInput具有JavaScript快捷方式的小部件。

DecimalField¶

班级DecimalField(最大数字=无, 十进制位=无, *备选方案)[源代码]¶
​​ ​一个固定精度的十进制数,​ ​以Python表示,由Decimal举个例子。它使用DecimalValidator.

有两个所需论点:

DecimalField.max_digits¶

​该数字中允许的最大位数。​ ​请注意,此数字必须大于或等于decimal_places.

DecimalField.decimal_places¶

​要与该数字一起存储的小数位数​ ​。

例如,将数字存储到999如果分辨率为小数点2位,您可以使用:

models.DecimalField(..., max_digits=5, decimal_places=2)

并以小数点10位的分辨率存储大约10亿个数字:

models.DecimalField(..., max_digits=19, decimal_places=10)

此字段的默认窗体小部件是NumberInput什么时候localize是False或TextInput不然的话。

DurationField¶

DurationField(*备选方案)[源代码]¶
​​ ​用于存储用Python建模的时间周期的字段。​ ​timedelta…在PostgreSQL上使用时,使用的数据类型是interval在Oracle上,数据类型是INTERVAL DAY(9) TO SECOND(6)…否则bigint使用微秒。

EmailField¶

mailField(最大长度=254, *备选方案)[源代码]¶
A CharField检查该值是否为有效的电子邮件地址。

FileField¶

FileField(上传到=无, 最大长度=100, *备选方案)[源代码]¶
文件上传字段。

有两个可选参数:

FileField.upload_to¶
此属性提供了一种设置上载目录和文件名的方法,可以通过两种方式设置。在这两种情况下,该值都传递给Storage.save()方法。

如果指定字符串值,则它可能包含strftime()格式化,它将被文件上传的日期/时间所取代(这样上传的文件就不会填满给定的目录)。例如:

class MyModel(models.Model):
# file will be uploaded to MEDIA_ROOT/uploads
upload = models.FileField(upload_to='uploads/')
# or...
# file will be saved to MEDIA_ROOT/uploads/2015/01/30
upload = models.FileField(upload_to='uploads/%Y/%m/%d/')

如果您使用的是默认的FileSystemStorage,则字符串值将追加到​ ​MEDIA_ROOT路径​ ​,以形成本地文件系统上存储上载文件的位置。如果您使用的是不同的存储,请检查该存储的文档以了解它是如何处理的upload_to.

upload_to也可能是可调用的,例如函数。这将被调用以获取上载路径,包括文件名。此可调用必须接受两个参数,并返回要传递给存储系统的Unix样式路径(带有正斜杠)。这两个论点是:

**instance:**模型的一个实例,其中FileField被定义。更具体地说,这是附加当前文件的特定实例。
在大多数情况下,这个对象还没有保存到数据库中,所以如果它使用默认的AutoField, 它的主键字段可能还没有值。.

**filename:**最初赋予文件的文件名。在确定最终目标路径时,可以考虑这一点,也可以不考虑。
例如:

def user_directory_path(instance, filename):
# file will be uploaded to MEDIA_ROOT/user_<id>/<filename>
return 'user_{0}/{1}'.format(instance.user.id, filename)

class MyModel(models.Model):
upload = models.FileField(upload_to=user_directory_path)

FileField.storage¶

存储对象,它处理文件的存储和检索。看见管理文件有关如何提供此对象的详细信息。

此字段的默认窗体小部件是ClearableFileInput.

使用FileField或者ImageField(见下文)在模型中采取了几个步骤:

在设置文件中,需要定义MEDIA_ROOT作为目录的完整路径,您希望Django存储上传的文件。(为了性能,这些文件不存储在数据库中。)定义MEDIA_URL作为该目录的基本公共URL。确保Web服务器的用户帐户可以写入此目录。
添加FileField或ImageField对于您的模型,定义upload_to选项指定MEDIA_ROOT用于上传的文件。
所有存储在数据库中的内容都是文件的路径(相对于MEDIA_ROOT)。你很可能会想利用这个方便url属性由Django提供。例如,如果您的ImageField被称为mug_shot,您可以在模板中获得图像的绝对路径。{{ object.mug_shot.url }}.
例如,说你的MEDIA_ROOT设置为’/home/media’,和upload_to设置为’photos/%Y/%m/%d’…这个’%Y/%m/%d’部分upload_to是strftime()格式化;’%Y’是四位数的年份,’%m’是两位数的月份’%d’是两位数的一天。如果您在2007年1月15日上传了一个文件,它将保存在目录中。/home/media/photos/2007/01/15.

如果要检索上载的文件的磁盘上文件名或文件的大小,可以使用name和size属性;有关可用属性和方法的更多信息,请参见File类引用和管理文件主题指南。

注解

文件是作为在数据库中保存模型的一部分而保存的,因此在保存模型之前,不能依赖磁盘上使用的实际文件名。

上传的文件的相对URL可以使用url属性。在内部,这调用url()底层的方法Storage班级。

请注意,每当您处理上传的文件时,您都应该密切注意上载它们的位置以及它们是什么类型的文件,以避免安全漏洞。验证所有上传的文件这样你就能确定这些文件就是你想的那样。例如,如果您盲目地让某人在没有验证的情况下将文件上传到Web服务器文档根目录中的某个目录,那么有人可以上传CGI或PHP脚本,并通过访问站点上的URL来执行该脚本。不要允许这样。

还要注意的是,即使是​ ​上传的HTML文件,因为它可以由浏览器执行(虽然不是由服务器执行),也可能造成等同于XSS或CSRF攻击的安全威胁。​

FileField实例在数据库中创建为varchar默认最大长度为100个字符的列。与其他字段一样,可以使用max_length。

FileField和FieldFile¶

FieldFile[源代码]¶
当您访问FileField在模型上,您将得到FieldFile作为访问基础文件的代理。

的APIFieldFile镜像File,有一个关键的区别:类包装的对象不一定是Python内置的文件对象的包装器。相反,它是对Storage.open()方法,该方法可能是File对象的自定义存储实现。FileAPI

除了从File比如read()和write(), FieldFile包括几种可用于与基础文件交互的方法:

警告

这门课有两种方法,save()和delete(),默认情况下保存关联对象的模型对象。FieldFile在数据库里。

FieldFile.name¶

的根目录中包含相对路径的文件名。Storage与之相关的FileField.

FieldFile.size¶

基础的结果Storage.size()方法。

FieldFile.url¶

访问文件的相对URL的只读属性。url()底层的方法Storage班级。

FieldFile.open(模式=‘RB’)[源代码]¶

中打开或重新打开与此实例关联的文件。mode…与标准Python不同open()方法时,它不返回文件描述符。

由于基础文件是在访问它时隐式打开的,因此可能没有必要调用此方法,除非重置指向基础文件的指针或更改mode.

FieldFile.close()[源代码]¶

行为类似于标准的Pythonfile.close()方法并关闭与此实例关联的文件。

FieldFile.save(名字, 含量, 保存=真)[源代码]¶

该方法获取文件名和文件内容,并将它们传递给字段的存储类,然后将存储的文件与模型字段相关联。如果要手动将文件数据与FileField实例在您的模型中,save()方法用于持久化该文件数据。

采用两个必需的参数:name文件的名称,以及content它是一个包含文件内容的对象。任选save参数控制与此字段关联的文件更改后是否保存模型实例。默认为True.

注意,content参数应该是django.core.files.File,而不是Python的内置文件对象。您可以构造一个File来自现有的Python文件对象,如下所示:

from django.core.files import File
# Open an existing file using Python's built-in open()
f = open('/path/to/hello.world')
myfile = File(f)

也可以用Python字符串构造一个,如下所示:

from django.core.files.base import ContentFile
myfile = ContentFile("hello world")

有关更多信息,请参见管理文件.

FieldFile.delete(保存=真)[源代码]¶

删除与此实例关联的文件,并清除字段中的所有属性。注意:如果文件碰巧是打开的,则此方法将关闭delete()叫做。

任选save参数控制是否在删除与此字段关联的文件后保存模型实例。默认为True.

​注意,当模型被删除时,相关文件不会被删除。如​ ​​果您需要清理孤立的文件,您需要自己处理它(例如,使用可以​ ​手动运行或计划通过cron定期运行的自定义管理命令​ ​)。

FilePathField¶

班级FilePathField(路径=无, 匹配=无, 递归=假, 最大长度=100, *备选方案)[源代码]¶
A CharField其选择仅限于文件系统上某个目录中的文件名。有三个特殊的参数,其中第一个是所需:

FilePathField.path¶

需要。指向以下目录的绝对文件系统路径:FilePathField应该得到它的选择。例子:"/home/images".

FilePathField.match¶

可选的。作为字符串的正则表达式FilePathField将用于过滤文件名。注意,regex将应用于基本文件名,而不是完整路径。例子:“foo.*.txt$”,它将匹配名为foo23.txt但不是bar.txt或foo23.png.

FilePathField.recursive¶

可选的。任一True或False…默认值是False…指定是否所有的子目录path应包括在内

FilePathField.allow_files¶

可选的。任一True或False…默认值是True…指定是否应包括指定位置中的文件。不是这个就是allow_folders一定是True.

FilePathField.allow_folders¶

可选的。任一True或False…默认值是False…指定是否应包括指定位置中的文件夹。不是这个就是allow_files一定是True.

当然,这些论点可以一起使用。

一个潜在的问题是match应用于基本文件名,而不是完整路径。因此,这个例子:

FilePathField(path="/home/images", match="foo.*", recursive=True)

.会匹配的/home/images/foo.png但不是/home/images/foo/bar.png因为match应用于基文件名(foo.png和bar.png).

FilePathField实例在数据库中创建为varchar默认最大长度为100个字符的列。与其他字段一样,可以使用max_length争论。

FloatField¶

班级FloatField(*备选方案)[源代码]¶
以Python表示的浮点数,由float举个例子。

此字段的默认窗体小部件是NumberInput什么时候localize是False或TextInput不然的话。

FloatFieldv.V.DecimalField

这个FloatField类有时与DecimalField班级。虽然它们都代表实数,但它们代表着不同的数字。FloatField使用Python的float内部输入,同时DecimalField使用Python的Decimal类型。有关两者之间差异的信息,请参阅Python的文档以获得decimal模块。

ImageField¶

ImageField(上传到=无, 高度场=无, 宽度字段=无, 最大长度=100, *备选方案)[源代码]¶
继承所有属性和方法。FileField,但也验证上传的对象是有效的图像。

除了可用的特殊属性之外,FileField…ImageField也有height和width属性。

为了便于查询这些属性,ImageField有两个额外的可选参数:

ImageField.height_field¶

模型字段的名称,该字段将在每次保存模型实例时使用图像的高度自动填充。

ImageField.width_field¶

模型字段的名称,该字段将在每次保存模型实例时使用图像的宽度自动填充。

要求枕图书馆。

ImageField实例在数据库中创建为varchar默认最大长度为100个字符的列。与其他字段一样,可以使用max_length争论。

此字段的默认窗体小部件是ClearableFileInput.

IntegerField¶

IntegerField(*备选方案)[源代码]¶
​​ ​一个整数。​ ​值-2147483648到2147483647在Django支持的所有数据库中都是安全的。

它用MinValueValidator和MaxValueValidator根据默认数据库支持的值验证输入。

此字段的默认窗体小部件是NumberInput什么时候localize是False或TextInput不然的话。

GenericIPAddressField¶

班级GenericIPAddressField(协议=“两者”, unpack_ipv 4=false, *备选方案)[源代码]¶
​​ ​IPv 4或IPv 6地址,以字符串格式​ ​(例如,192.0.2.30或2a02:42fe::4)。此字段的默认窗体小部件是TextInput.

IPv 6地址规范化如下RFC 4291#节-2.2第2.2节,包括使用该节第3段建议的IPv 4格式,如::ffff:192.0.2.0…例如,2001:0::0:01将归一化为2001::1,和::ffff:0a0a:0a0a到::ffff:10.10.10.10…所有字符都转换为小写。

GenericIPAddressField.protocol¶

限制指定协议的有效输入。接受的值是’both’(违约),‘IPv4’或’IPv6’…匹配是不区分大小写的。

GenericIPAddressField.unpack_ipv4¶

解包IPv 4映射地址,如::ffff:192.0.2.1…如果启用此选项,该地址将解压缩到192.0.2.1…默认值被禁用。只能在protocol设置为’both’.

如果允许空值,则必须允许空值,因为空白值存储为空值。

NullBooleanField¶

NullBooleanField(*备选方案)[源代码]¶
喜欢BooleanField带着null=True…使用这个字段而不是这个字段,因为它可能会在Django的未来版本中被废弃。

PositiveIntegerField¶

PositiveIntegerField(*备选方案)[源代码]¶
​​ ​就像IntegerField,但必须为正或零(0)。​ ​值0到2147483647在Django支持的所有数据库中都是安全的。价值0因为向后兼容性的原因而被接受。

PositiveSmallIntegerField¶

PositiveSmallIntegerField(*备选方案)[源代码]¶
​​ ​就像PositiveIntegerField,但只允许在特定(数据库相关)点下的值。​ ​值0到32767在Django支持的所有数据库中都是安全的。

SlugField¶

班级SlugField(最大长度=50, *备选方案)[源代码]¶
鼻塞是报纸上的术语。段塞是某物的短标签,只包含字母、数字、下划线或连字符。它们通常用于URL。

就像Charfield一样,您可以指定max_length(请阅读关于数据库可移植性和max_length(在这一节中也是如此)。如果max_length如果没有指定,Django将使用默认长度50。

暗示设置Field.db_index到True.

根据其他值的值自动预填充SlugField通常是有用的。您可以在管理中自动执行以下操作:prepopulated_fields.

它用validate_slug或validate_unicode_slug为了验证。

SlugField.allow_unicode¶

​如果True字段除接受ASCII字母外,还接受Unicode字母。​ ​默认为False.

SmallIntegerField¶

班级SmallIntegerField(*备选方案)[源代码]¶
​​ ​就像IntegerField,但只允许在特定(数据库相关)点下的值。​ ​值-32768到32767在Django支持的所有数据库中都是安全的。

TextField¶

TextField(*备选方案)[源代码]¶
​​ ​一个大的文本字段。​ ​此字段的默认窗体小部件是Textarea.

如果指定max_length属性,则它将反映在Textarea自动生成表单字段的小部件。但是,它没有在模型或数据库级别强制执行。用CharField为了这个。

TimeField¶

TimeField(AUTO_NOW=FALSE, AUTO_NOW_ADD=FALSE, *备选方案)[源代码]¶
​​ ​时间,​ ​以Python表示,由datetime.time举个例子。接受相同的自动填充选项。DateField.

此字段的默认窗体小部件是TextInput…管理员添加了一些JavaScript快捷方式。

URLField¶

URLField(最大长度=200, *备选方案)[源代码]¶
A CharField对于URL,由URLValidator.
此字段的默认窗体小部件是TextInput.
像所有CharField子类,URLField可选max_length。​​ ​如果不指定max_length,则使用默认的200。​

UUIDField¶

UUIDField(*备选方案)[源代码]¶
​​ ​用于存储通用唯一标识符的字段。​ ​​使用Python的UUID班级。在PostgreSQL上使用时,这将存储在uuid数据类型,否则在char(32).
通用唯一标识符是替代AutoField为primary_key…数据库不会为您生成UUID,因此建议使用default:

import uuid
from django.db import models

class MyUUIDModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
# other fields

注意,可调用(省略括号)传递给default,而不是UUID.

关系域¶

Django还定义了一组表示关系的字段。

ForeignKey¶

班级ForeignKey(到, on_DELETE, *备选方案)[源代码]¶
​​ ​一对一的关系。​ ​需要两个位置参数:与模型相关的类和on_delete选择。

要创建递归关系–一个与自身具有多对一关系的对象–使用models.ForeignKey(‘self’, on_delete=models.CASCADE).

如果需要在尚未定义的模型上创建关系,则可以使用模型名称,而不是模型对象本身:

from django.db import models

class Car(models.Model):
manufacturer = models.ForeignKey(
'Manufacturer',
on_delete=models.CASCADE,
)
# ...

class Manufacturer(models.Model):
# ...

关系是这样定义的抽象模型在将模型子类为具体模型而与抽象模型不相关时解析app_label:

from django.db import models

class AbstractCar(models.Model):
manufacturer = models.ForeignKey('Manufacturer', on_delete=models.CASCADE)

class Meta:
abstract =
from django.db import models
from products.models import AbstractCar

class Manufacturer(models.Model):
pass

class Car(AbstractCar):
pass

# Car.manufacturer will point to `production.Manufacturer` here.

若要引用在另一个应用程序中定义的模型,可以使用完整的应用程序标签显式指定模型。例如,如果Manufacturer上面的模型是在另一个名为production,你需要使用:

class Car(models.Model):
manufacturer = models.ForeignKey(
'production.Manufacturer',
on_delete=models.CASCADE,
)

​这种引用(称为惰性关系)在解决两个应用程序之间的循环导入依赖时非常有用​ ​。

上自动创建数据库索引。ForeignKey…可以通过设置db_index到False…如果要创建外键以保持一致性而不是连接,或者要创建像部分索引或多列索引这样的替代索引,则可能希望避免索引的开销。

数据库表示¶

在幕后,Django附加"_id"到字段名以创建其数据库列名。在上面的示例中,Car模型将有一个manufacturer_id列。(您可以通过指定db_column)但是,除非编写自定义SQL,否则代码永远不必处理数据库列名。您将始终处理模型对象的字段名。

论点¶
ForeignKey接受其他定义关系工作细节的参数。

ForeignKey.on_delete¶

对象引用的对象时,ForeignKey属性指定的sql约束的行为。on_delete争论。例如,如果您有一个可空的ForeignKey并且希望在删除引用对象时将其设置为空:

user = models.ForeignKey(
User,
models.SET_NULL,
blank=True,
null=True,
)

​on_delete不会在数据库中创建SQL约束。​ ​支持数据库级级联选项以后可能会实现.

的可能值on_delete被发现在django.db.models:

CASCADE[源代码]¶

级联删除。Django模拟删除级联上SQL约束的行为,并删除包含ForeignKey的对象。

Model.delete()不调用相关模型,但是pre_delete和post_delete为所有已删除的对象发送信号。

PROTECT[源代码]¶

通过引发防止删除引用对象ProtectedError的子类django.db.IntegrityError.

SET_NULL[源代码]¶

设置ForeignKeyNULL;这只有在以下情况下才有可能null是True.

SET_DEFAULT[源代码]¶

设置ForeignKey的默认值;ForeignKey必须设置好。

SET()[源代码]¶

设置ForeignKey传递给SET(),或者如果传入一个可调用的,则调用它的结果。在大多数情况下,传递可调用是必要的,以避免在导入Models.py时执行查询:

from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import models

def get_sentinel_user():
return get_user_model().objects.get_or_create(username='deleted')[0]

class MyModel(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.SET(get_sentinel_user),
)

DO_NOTHING[源代码]¶

不采取行动。如果数据库后端强制引用完整性,这将导致IntegrityError除非手动添加sqlON DELETE约束到数据库字段。

ForeignKey.limit_choices_to¶

​控件呈现此字段时,设置此字段可用选项的限制。​ ​ModelForm或者管理员(默认情况下,查询集中的所有对象都可以选择)。要么是字典,要么是Q对象,或返回字典或Q对象可以使用。

例如:

staff_member = models.ForeignKey(
User,
on_delete=models.CASCADE,
limit_choices_to={'is_staff': True},
)

属性上的相应字段。ModelForm只列出Users有is_staff=True…这在Django管理中可能会有所帮助。

例如,当与Python一起使用时,可调用的表单可能会有所帮助。datetime模块来限制日期范围的选择。例如:

def limit_pub_date_choices():
return {'pub_date__lte': datetime.date.utcnow()}

limit_choices_to =

如果limit_choices_to是或返回Q object,这是非常有用的。复杂查询中未列出的字段时,它只会对管理中可用的选项产生影响。raw_id_fields在ModelAdmin为了模特。

注解

如果使用可调用的limit_choices_to,每次实例化新表单时都会调用它。还可以在验证模型时调用它,例如通过管理命令或管理。ADMIN构造查询集以在各种边缘情况下多次验证其表单输入,因此有可能多次调用您的可调用的表单。

ForeignKey.related_name¶

要用于从相关对象返回到此对象的关系的名称。它也是related_query_name(从目标模型中为反向筛选器名称使用的名称)。见相关对象文档作为一个完整的解释和例子。中定义关系时,必须设置此值。抽象模型当你这样做的时候一些特殊的语法是可用的。

如果您希望Django不创建反向关系,则设置related_name到’+‘或者以’+’…例如,这将确保User模型与此模型没有反向关系:

user = models.ForeignKey(
User,
on_delete=models.CASCADE,
related_name='+',
)

ForeignKey.related_query_name¶

要用于目标模型的反向筛选器名称的名称。值默认为related_name或default_related_name如果设置,则默认为模型名称:

# Declare the ForeignKey with related_query_name
class Tag(models.Model):
article = models.ForeignKey(
Article,
on_delete=models.CASCADE,
related_name="tags",
related_query_name="tag",
)
name = models.CharField(max_length=255)

# That's now the name of the reverse filter
Article.objects.filter(tag__name="important")

喜欢related_name, related_query_name通过以下方式支持应用程序标签和类内插一些特殊的语法.

ForeignKey.to_field¶

与之相关的对象上的字段。默认情况下,Django使用相关对象的主键。​ ​如果引用不同的字段,则该字段必须具有unique=True.​

ForeignKey.db_constraint¶

​控制是否应在此外键的数据库中创建约束。默认情况是True,​ ​这几乎是你想要的,把它设置为False可能对数据完整性非常不利。尽管如此,以下是您可能希望这样做的一些场景:

遗留数据无效。
你在分享你的数据库。
如果设置为False,访问不存在的相关对象将引发DoesNotExist例外。

ForeignKey.swappable¶

控制迁移框架的反应,如果这ForeignKey指向一个可互换的模型。如果是的话True-默认-那么如果ForeignKey的当前值匹配的模型。settings.AUTH_USER_MODEL(或另一个可互换的模型设置)关系将使用对设置的引用存储在迁移中,而不是直接存储到模型中。

你只想覆盖这个False如果您确信您的模型应该始终指向可互换的模型,例如,如果它是专门为您的自定义用户模型设计的配置文件模型。

把它设置为False并不意味着你可以引用一个可互换的模型,即使它被换掉了-False只意味着使用这个ForeignKey进行的迁移总是引用您指定的确切模型(因此,如果用户试图使用不支持的用户模型运行,就会很难)。

如果有疑问,请将其保留在True.

ManyToManyField¶

班级ManyToManyField(到, *备选方案)[源代码]¶
多到多的关系。需要一个位置参数:与模型相关的类,它的工作方式与它所做的完全相同。ForeignKey,包括递归和懒惰关系。

相关对象可以使用字段的RelatedManager.

数据库表示¶

在幕后,Django创建了一个中间连接表来表示多到多的关系。默认情况下,这个表名是使用多到多字段的名称以及包含它的模型的表名生成的。由于某些数据库不支持超过一定长度的表名,这些表名将被自动截断,并且将使用唯一性散列。author_books_9cdf…属性手动提供联接表的名称。db_table选择。

论点¶
ManyToManyField接受一组额外的参数–所有这些参数都是可选的–这些参数控制着关系的工作方式。

ManyToManyField.related_name¶
同ForeignKey.related_name.

ManyToManyField.related_query_name¶
同ForeignKey.related_query_name.

ManyToManyField.limit_choices_to¶
同ForeignKey.limit_choices_to.

limit_choices_to在ManyToManyField控件指定的自定义中间表。through参数。

ManyToManyField.symmetrical¶
仅用于定义ManyToManyField on Self。考虑以下模式:

from django.db import models

class Person(models.Model):
friends = models.ManyToManyField("self")

当Django处理这个模型时,它会标识它有一个ManyToManyField,因此,它没有添加person_set属性的Person班级。相反,ManyToManyField假设是对称的–也就是说,如果我是你的朋友,那么你就是我的朋友。

如果您不希望在多到多的关系中具有对称性self,集symmetrical到False…这将迫使Django添加反向关系的描述符,从而允许ManyToManyField关系是不对称的。

ManyToManyField.through¶

​Django将自动生成一个表来管理多到多的关系。但是,如果要手动指定中间表,则可以使用through选项指定表示要使用的中间表的Django模型​ ​。

此选项最常用的用法是当您想要关联时。多到多关系的额外数据.

如果不指定显式through模型,仍然有一个隐含的through模型类,您可以使用它直接访问为保存关联而创建的表。它有三个字段来连接模型。

如果源模型和目标模型不同,则生成以下字段:

id关系的主键。

<containing_model>_id*id声明ManyToManyField.
<other_model>_id*id的模型ManyToManyField指向。

如果ManyToManyField从同一模型生成以下字段,并将其指向同一模型:

id关系的主键。

from_<model>_id*id指向模型(即源实例)的实例。
to_<model>_id*id关系指向的实例(即目标模型实例)

这个类可以像普通模型一样用于查询给定模型实例的关联记录。

ManyToManyField.through_fields¶

仅在指定自定义中介模型时使用。Django通常将确定要使用的中介模型的哪些字段,以便自动建立多到多的关系。然而,请考虑以下模式:

from django.db import models

class Person(models.Model):
name = models.CharField(max_length=50)

class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(
Person,
through='Membership',
through_fields=('group', 'person'),
)

class Membership(models.Model):
group = models.ForeignKey(Group, on_delete=models.CASCADE)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
inviter = models.ForeignKey(
Person,
on_delete=models.CASCADE,
related_name="membership_invites",
)
invite_reason = models.CharField(max_length=64)

​Membership有二外键Person (person和inviter),这使得关系变得模棱两可,Django不知道使用哪一个。在这种情况下,必须显式指定Django应该使用哪些外键through_fields,​ ​如上面的例子所示。

through_fields接受2元组(‘field1’, ‘field2’),在哪里field1是模型的外键的名称。ManyToManyField定义为(group(在此情况下),以及field2目标模型外键的名称(person在这种情况下)。

当您在中间模型上有多个外键到任何(甚至两者都)参与多到多关系的模型时,您必指定through_fields…这也适用于递归关系当使用中间模型且模型有两个以上的外键时,或者要显式指定应该使用哪两个Django。

使用中间模型的递归关系总是被定义为非对称的-也就是说,使用symmetrical=False-因此,有“来源”和“目标”的概念。在这种情况下’field1’将被视为这种关系的“源头”'field2’作为“目标”。

ManyToManyField.db_table¶

为存储多到多个数据而创建的表的名称。如果没有提供这一点,Django将根据定义关系和字段本身的名称的模型的名称,使用默认名称。

ManyToManyField.db_constraint¶

控制是否应在数据库中为中间表中的外键创建约束。默认情况是True,这几乎是你想要的,把它设置为False可能对数据完整性非常不利。尽管如此,以下是您可能希望这样做的一些场景:

遗留数据无效。
你在分享你的数据库。
两者都传递是错误的。db_constraint和through.

ManyToManyField.swappable¶

控制迁移框架的反应,如果这ManyToManyField指向一个可互换的模型。如果是的话True-默认-那么如果ManyToManyField的当前值匹配的模型。settings.AUTH_USER_MODEL(或另一个可互换的模型设置)关系将使用对设置的引用存储在迁移中,而不是直接存储到模型中。

你只想覆盖这个False如果您确信您的模型应该始终指向可互换的模型,例如,如果它是专门为您的自定义用户模型设计的配置文件模型。

如果有疑问,请将其保留在True.

ManyToManyField不支持validators.

null没有任何效果,因为无法要求数据库级别的关系。

OneToOneField¶

班级OneToOneField(到, on_DELETE, 父链接=false, *备选方案)[源代码]¶
一对一的关系。在概念上,这类似于ForeignKey带着unique=True,但是关系的“反向”部分将直接返回单个对象。

这是最有用的,作为一个模型的主键,它在某种程度上“扩展”了另一个模型;多表继承例如,通过从子模型添加一个隐式一对一关系到父模型来实现。

需要一个位置参数:模型将与之相关的类。这与它的工作原理完全一样。ForeignKey,包括所有关于递归和懒惰关系。

如果不指定related_name为OneToOneField,Django将使用当前模型的小写名称作为默认值。

使用以下示例:

from django.conf import settings
from django.db import models

class MySpecialUser(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
)
supervisor = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name='supervisor_of',
)

你的结果User模型将具有以下属性:

>>> user = User.objects.get(pk=1)
>>> hasattr(user, 'myspecialuser')
True
>>> hasattr(user, 'supervisor_of')
True
A DoesNotExist如果相关表中的条目不存在,则在访问反向关系时引发异常。例如,如果用户没有由MySpecialUser:

>>> user.supervisor_of
Traceback (most recent call last):
...
DoesNotExist: User matching query does not exist.

此外,OneToOneField接受所有额外的参数。ForeignKey,再加上一个额外的论点:

OneToOneField.parent_link¶

什么时候True并在继承自另一个模型的模型中使用。混凝土模型,指示应将此字段用作返回父类的链接,而不是额外的链接。OneToOneField通常是通过子类隐式创建的。

看见一对一关系的用法示例OneToOneField.

字段API引用¶

班级Field[源代码]¶
​​ ​Field表示数据库表列的抽象类。​ ​Django使用字段创建数据库表(db_type()),将Python类型映射到数据库(get_prep_value()),反之亦然(from_db_value()).

因此,字段是不同Django API中的基本部分,特别是,models和querysets.

在模型中,字段实例化为class属性,并表示特定的表列,请参见模型…它有一些属性,如null和unique,以及Django用于将字段值映射到特定于数据库的值的方法。

A Field是RegisterLookupMixin因此两者都是Transform和Lookup可以在上面注册,以便在QuerySetS(如:field_name__exact=“foo”)。全内置查找默认情况下注册。

所有Django的内置字段,例如CharField的特定实现。Field…如果需要自定义字段,则可以将任何内置字段子类化,也可以编写Field从零开始。在任何一种情况下,请参见编写自定义模型场.

description¶

字段的详细描述,例如用于django.contrib.admindocs申请。

描述的形式可以是:

description = _("String (up to %(max_length)s)")

其中,参数是从字段的__dict__.

映射aField对于特定于数据库的类型,Django公开了几种方法:

get_internal_type()[源代码]¶

返回为后端特定用途命名此字段的字符串。默认情况下,它返回类名。

看见模拟内置字段类型用于自定义字段。

db_type(连接)[源代码]¶

对象的数据库列数据类型。Field,考虑到connection.

看见自定义数据库类型用于自定义字段。

rel_db_type(连接)[源代码]¶

返回字段的数据库列数据类型,如ForeignKey和OneToOneField指向Field,考虑到connection.

看见自定义数据库类型用于自定义字段。

Django需要与数据库后端和字段交互的主要情况有三种:

当它查询数据库时(Python值->数据库后端值)
当它从数据库加载数据时(数据库后端值->Python值)
当它保存到数据库时(Python值->数据库后端值)
当询问时,get_db_prep_value()和get_prep_value()使用:

get_prep_value(价值)[源代码]¶

value是模型属性的当前值,该方法应该以已准备好用作查询参数的格式返回数据。

看见将Python对象转换为查询值供使用。

get_db_prep_value(价值, 连接, 准备=假)[源代码]¶
皈依value特定于后端的值。默认情况下它返回value如果prepared=True和get_prep_value()如果是False.

看见将查询值转换为数据库值供使用。

当加载数据时,from_db_value()使用:

from_db_value(价值, 表达, 连接)¶
将数据库返回的值转换为Python对象。它正好相反get_prep_value().

此方法不用于大多数内置字段,因为数据库后端已经返回正确的Python类型,或者后端本身执行转换。

看见将值转换为Python对象供使用。

注解

出于性能原因,from_db_value不是在不需要它的字段(所有Django字段)上作为无操作实现的。所以你不能打电话super在你的定义中。

当存钱的时候,pre_save()和get_db_prep_save()使用:

get_db_prep_save(价值, 连接)[源代码]¶

与get_db_prep_value(),但是当字段值必须是得救到数据库。默认情况下返回get_db_prep_value().

pre_save(模型实例, 加)[源代码]¶

方法之前调用的get_db_prep_save()在保存前准备值(例如:DateField.auto_now).

model_instance是该字段所属的实例,并且add实例是否首次保存到数据库。

它应该返回相应属性的值。model_instance为了这个领域。属性名在self.attname(这是由Field).

看见在保存前预处理数值供使用。

字段通常以不同的类型接收它们的值,无论是从序列化还是从窗体。

to_python(价值)[源代码]¶

将值转换为正确的Python对象。它起着相反的作用value_to_string(),并且也被叫进来。clean().

看见将值转换为Python对象供使用。

除了保存到数据库之外,该字段还需要知道如何序列化其值:

value_from_object(OBJ)[源代码]¶

​返回给定模型实例的字段值​ ​。

这种方法经常被value_to_string().

value_to_string(OBJ)[源代码]¶
皈依obj一根绳子。​​ ​用于序列化字段的值​ ​。

看见将字段数据转换为序列化供使用。

使用时model forms,Field需要知道应该用哪个表单字段来表示:

formfield(表格类=无, 选择形式_class=无, **)[源代码]¶
返回默认值django.forms.Field在这个领域ModelForm.

默认情况下,如果两者都是form_class和choices_form_class是None,它使用CharField…如果字段choices和choices_form_class未指定,它使用TypedChoiceField.

看见指定模型字段的表单字段供使用。

deconstruct()[源代码]¶

返回一个包含足够信息的4元组,以便重新创建该字段:

模型上字段的名称。
字段的导入路径(例如,“django.db.models.IntegerField”)。这应该是最便携的版本,所以不那么具体可能更好。
位置参数的列表。
一组关键字参数。
必须在1.7之前将此方法添加到字段中,以便使用迁徙.

字段属性引用¶

每个Field实例包含几个允许内省其行为的属性。使用这些属性而不是isinstance检查您何时需要编写依赖于字段功能的代码。这些属性可以与模型._metaAPI若要缩小搜索特定字段类型的范围,请执行以下操作。自定义模型字段应该实现这些标志。

字段属性¶

Field.auto_created¶
指示是否自动创建字段的布尔标志,如OneToOneField模型继承使用。

Field.concrete¶
布尔标志,指示字段是否有与其关联的数据库列。

Field.hidden¶
布尔标志,指示某个字段是否用于支持另一个非隐藏字段的功能(例如,content_type和object_id字段构成GenericForeignKey)。这个hidden标志用于区分模型上字段的公共子集与模型上的所有字段。

注解

Options.get_fields()默认情况下排除隐藏字段。进场include_hidden=True若要返回结果中的隐藏字段,请执行以下操作。

Field.is_relation¶
布尔标志,该标志指示某个字段是否包含对一个或多个其他模型的功能引用(例如:ForeignKey, ManyToManyField, OneToOneField等等)。

Field.model¶
返回定义字段的模型。如果在模型的超类上定义字段,model将引用超类,而不是实例的类。

具有关系的字段的属性¶
这些属性用于查询关系的基数和其他细节。这些属性存在于所有字段中;但是,它们只具有布尔值(而不是布尔值)。None)如果字段是关系类型(Field.is_relation=True).

Field.many_to_many¶
布尔标志True如果场有多到多的关系;False不然的话。Django中包含的唯一字段True是ManyToManyField.

Field.many_to_one¶
布尔标志True如果字段具有多对一的关系,如ForeignKey; False不然的话。

Field.one_to_many¶
布尔标志True如果字段具有一对多的关系,如GenericRelation或ForeignKey; False不然的话。

Field.one_to_one¶
布尔标志True如果字段具有一对一的关系,如OneToOneField; False不然的话。

Field.related_model¶
指向该领域所涉及的模型。例如,Author在……里面ForeignKey(Author, on_delete=models.CASCADE)…这个related_model为了GenericForeignKey总是None.


python 输出log python 输出百分数

result = '{:.2%}'.format(match_rate)#output the rate in percentage. The match rate is: 14.58%.

mysql 向上无限极查找 mysql向上取整函数

一:四舍五入:ROUND() 二:向上取整:CEILING() 三:向下取整:FLOOR() 下面是示例代码。SELECT round('123.1'), round('123.4'), round('123.49'), round('123.5'); SELECT CEILING('123.1'), CEILING('123.4'), CEILING('123.49

python list 取反 python中的按位取反

【python学习笔记–按位取反“~”】按位取反是 ~正整数按位取反是 其本身+1的负数;负整数按位取反是 其本身+1的绝对值;零的按位取反是 -1例如:print(bin(2))#bin(x)将整数转换为前缀为“0b”的二进制字符串 print(bin(~2))#~按位取反 print(~2) print(bin(-2)) print(bin(~(-2))) print(~(-2))输出0b1

python 生成云图 基于python的图表生成系统

我编写了以下代码来使用plotly库生成几个图表:#Read the excel file from local spreadsheetdf = pd.read_excel(r'C:\Users\llopez\Documents\Temp\Python finished goods.xlsx', sheet_name='Sheet1') #Create a dictionary of tuples