当前位置: 首页 > 网络应用技术

如何使用Django模型

时间:2023-03-06 17:56:48 网络应用技术

  简介:今天,首席CTO Note将与您分享如何使用Django模型。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

  本文目录清单:

  1.如何在模型2中的Manytomany字段中筛选数据集Djangofilter。4. Django使用现有的数据库表。如何构建模型5,Django模型如何实现使用模型6,Django如何查询如何查询某个值的外部密钥。Django Model通常使用Django的GET和过滤器方法非常重要。

  为了说明两者之间的差异,定义了2个模型

  班级学生(Models.Model):

  name = models.chafield('name',max_length = 20,默认='')

  age = models.charfield('age',max_length = 20,默认='')

  课程(Models.Model):

  学生=型号。

  Python

  -m

  Django

  - 版本

  如果安装了Django,您应该看到安装版本。如果未安装,您会遇到一个错误,请提示否

  模块

  命名

  Django。

  本教程适用于Django

  1.10和Python

  3.4或更高版本。如果Django版本不匹配,则可以访问官方网站以参考您的相应的Django版本教程,或将Django更新到最新版本。

  如果您仍在使用Python

  2.7,您需要稍微调整代码以注意代码中的注释。

  创建项目

  如果这是您第一次使用Django,则需要处理一些初始设置。换句话说,这将自动生成一些代码以建立Django项目,但是您需要设置一些配置,包括数据库配置,Django特定选项和应用特定设置。

  从命令行,CD进入目录您将存储项目代码,然后运行以下命令:

  django-addmin

  StartProject

  我的网站

  #

  MySite是项目名称

  如果您运行错误,请参阅Privems

  跑步

  django-admin.this将在该目录中生成一个MySite目录,该目录是您的Django项目的根目录。它包含一系列自动生成目录和文件,并具有自己的专有用途。

  模板如何在Django中使用模型方法?

  使用TMUX的最佳方法是使用会话方式,以便您可以按照所需的方式将任务和应用程序组织为不同的会话。如果您想更改会话,则无需停止会话中的工作或杀死。让我们看一下这个工作。

  让我们开始一个名为“会话”的会话,然后运行顶部命令

  $ tmux new-s新会议

  $ top

  然后输入此会话的CTRL-B D。如果您想再次连接到此会话,则需要输入:

  $ tmux附件-Session -t会话

  之后,您将看到在重新连接的会话中仍在运行的顶部操作。

  在Internet上看到使用Django的模型和MAKEMIGRATION,迁移命令创建新表并使用它。但是我的数据已经存在,并且已经存储了,并且已经存储了数据,并且无法创建新表格。Django的指示和与模型名称的映射关系可以使Django使用现有表。

  如果模型在Django中存在如下:

  [python]查看普通副本

  来自django.db导入模型

  #在这里创建您的模型。

  Sciencenews(Models.Model):

  id = models.charfield(max_length = 36,primary_key = true)

  first_module = model.charfield(max_length = 30,默认值=“ news”)

  second_module = model.charfield(max_length = 30,默认值=“最新新闻”)

  title = models.charfield(max_length = 300)

  作者= models.charfield(max_length = 60,null = true)

  publish_date = models.charfield(max_length = 35,null = true)

  content = model.textfield(null = true)

  crawl_date = model.charfield(max_length = 35,null = true)

  from_url = models.charfield(max_length = 350,null = true)

  执行数据迁移命令:

  [python]查看普通副本

  python manage.py makemign

  python manage.py迁移

  名为show_sciencenews的数据表将在数据库中生成。显示为应用程序名称。我的应用程序名称在此处显示。

  我的存储和攀登数据数据的表名是Science_News,我想使用它来使用它而不是创建新表。其名称的名称更改为带有表格的模型的名称,在这里我更改为show_sciencenews。然后使用上述数据迁移命令。目前,可以提示数据表数据表已经存在错误。不合理的模型已使用数据表映射。接下来,您只需要正常使用模型和数据表即可。

  首先,标题中使用的Django版本是什么?Django似乎从未见过外国模型。根据ORM的说法,外国人实际上是SQL中的外部钥匙。就个人而言,房东的问题是,一个领域可以与其他多个表相对应,如下所示:

  类Whatreyoutrytoask:

  FILED_XXX = model.Foreignkey((MODLA,modelb,)))

  对于SQL来说,这是不科学的,它将无法与多个外部键相对应。如果要实现此效果,则只能拥有一个模型,modelb和File的中间表格,与此相对应。

  班级中间(Models.Model):

  model_a = model.foreignkey(modla)

  model_b = model.foreignkey(modelb)

  类Whatreyoutrytoask:

  FILED_XXX = Models.Foreignkey(可中间)

  简而言之,ModelA和ModelB之间存在关系。以上方法是指示一个可中间的表。实时您可以在django.modela或ModelB中使用Manytomany设置ManyTomany字段。请检查文档以获取特定的USANANY使用情况。

  类Modela(Model.Model):

  model_bs = manytomany(modelb)

  类Whatreyoutrytoask:

  FILED_XXX = models.Foreignkey(modla)

  #或此,取决于特定实施的需求

  #filed_xxx = models.foreignkey(modelb)

  模型是Django项目的基础。如果起初设计不当,那么在下一个开发过程中将遇到更多问题。或修改模型。这样做的后果是,在下一个开发过程中,我们必须做更多的努力来纠正这些错误。

  因此,在修改模型时,我们必须尽可能多地考虑!以下是我们经常使用的一些工具和技术:

  南方,对于数据迁移,我们将在每个Django项目中使用它。但是,当Django 1.7时,将会有Django.db。移民。

  Django-Model-Utils,用于处理常见模式,例如TimessTampedModel。

  django-extensions主要使用shell_plus命令,该命令将自动加载所有应用程序中的所有应用程序

  1.基本原则

  首先,在不同的应用程序中分发模型。如果您的Django项目中有20多个型号,则应考虑旋转该应用程序。我们建议每个应用程序的模型不超过5码。

  其次,尝试使用ORM。我们需要的大多数数据库索引都可以通过对象相关模型来实现,ORM为我们带来了许多快捷方式,例如生成SQL语句,读取/更新数据库时的安全验证。因此,如果您可以使用简单的ORM语句,则应尝试尽可能多地使用ORM。只有当纯SQL语句大大简化ORM语句时,才使用纯SQL语句。并且,在编写纯SQL语句时,应优先使用RAW()然后使用frain()。

  第三,如有必要,添加索引。添加db_index = tum tum to to Model非常简单,但是很难理解何时应该添加它。建立模型后,我们不会提前添加索引。索引:

  当所有数据库查询中的使用率为10%-25%时

  或当有真实数据时,或者可以正确估计使用索引后的效果确实令人满意

  第四,请注意模型的继承。该模型的继承需要在Django中非常谨慎。Django提供了三种继承方法,1。Abstract Base类继承(请勿与Pyhton Standard库的ABC模块混合),2。Multi -Table(Multi -Table(Multi -Table(Multi -Table)模型继承。下表列出了这三个继承的优点和缺点:

  Django的创建者和许多其他开发人员认为,多观看继承方法不是一个好方法。因此,我们强烈建议您不要使用此方法。以下是选择模型继承的一些常见方法:

  如果只有少数模型重复了字段,则无需使用模型继承。您只需要将这些相同的字段添加到每个模型中。

  如果您有足够的模型具有重复的字段,则大多数字段是由抽象基类继承的,并且将同一字段提取为抽象基类。

  代理模型很少使用,与其他两个继承存在许多差异。

  请不要使用多桌继承,因为它既消耗资源又消耗复杂。如果可以,请尝试使用OneTooneFields和Forefore。

  在Django项目中,创建时间和修改时间的两个字段最有用。抽象基类继承的示例如下:

  2. Django模型设计

  如何设计良好的Django模型可能是最难,最复杂的话题。在这里,让我们看一些基本技能:

  A。标准化

  我们首先建议了解数据库归一化。如果您不知道这是什么,那么我们强烈建议您先阅读相关书籍,或搜索“关系数据库设计”或“数据库标准化”。在模型之前,应首先确保设计数据库。

  b。缓存

  正确使用缓存来帮助我们提高数据库的性能。详细信息,我们将在未来的文章中进一步介绍。

  C.何时使用空和空白

  在定义模型字段时,我们可以设置null = true和blank = true(默认值为false),知道何时设置null和空白对开发人员也非常重要。在以下表格中,我们如何列出一个,我们如何一个一个列出,我们如何一个一个列出。使用这两个选项:

  D.何时使用binaryfield

  在Django 1.6中,添加了二进制文件中的二进制数据(二进制数据或字节)。对于BinaryField,我们不能使用ORM的过滤器,不包括其他SQL操作。但是在少数情况下,我们将使用BinaryField,例如,MessagePack格式的内容,传感器接受的原始数据和压缩数据。但是应该注意的是,二进制数据通常非常大,因此可能会慢慢降低数据库。如果发生这种现象,我们可以存储文件中的二进制数据存储,然后使用文件字段存储文件的路径信息。

  另外,请勿直接从BinaryField读取文件,并将其呈现给用户。因为,1。从数据库中读取和写作总是比文件系统慢;2.数据库备份将变得巨大,花更多的时间;它需要更多的时间; 3。获取文件的过程增加了此链接,从Django到数据库。

  3.不要替换默认模型管理器

  实际上,从ORM获得模型是通过Django的模型管理器完成的。Django为每个模型提供默认模型管理器。我们不建议替换它,因为::::

  当使用模型继承时,模型将继承抽象基类模型的模型管理器,而无需继承非提交基类的经理。

  Model的第一个模型管理器通常用作默认管理器。替换后,可能会出现不可预测的问题。

  4.数据库事务(事务)

  在Django 1.6中,每个数据库查询的ORM默认值是使用M.Create()或M.Update()时,每次timeIT都会简化对第一学者对ORM的理解的理解。但是缺点是,当一种视图包含两个数据库修改时,它可能会成功,但另一个视图可能会导致数据库不完整并带来很多危险。

  解决此问题的方法是使用数据库事务。在即将到来的一系列数据库操作中,它包含在事务中。当其中一个失败时,其他操作将自动返回。Django 1.6为我们带来了一套新的简单简单简单的简单性。强大的交易机制使我们能够轻松地使用数据库事务。

  A。将整个HTTP请求包装在交易中

  Django为我们提供了一种简单的方法,可以将所有数据库操作包裹在交易中的HTTP请求中:

  您只需要在数据库设置中添加'atomic_requests':TRUE选项,并且可以将整个HTTP请求包装在交易中。这样做的好处显然是安全的,但是劣势可能会下降。因此,我们必须采用更有针对性的交易。其次,应该注意的是,数据库的状态仅是数据库的状态,而不是其他数据库项目,例如发送电子邮件。因此,当涉及这些非数据库项目时,我们应该使用ittransaction.con_atomic_request()docoration()装饰(十年):

  b。更清楚的交易控制

  更清楚的是,交易控制意味着改善真实问题Web应用程序的性能,但这也意味着更多的开发时间。在大多数网站下,由于流量有限,Atomic_requests的使用就足够了。使用手动交易控制时,请注意:

  不要进行数据修改的操作,应将其排除在交易之外

  数据修改的操作应在交易中

  在特殊情况下,您可以违反上述两个

  应当指出的是,当视图返回django.http.streaminghttpresponse时,您应该将atomic_requests设置为false,或使用trassaction.non_atomic_requests修改视图。流由流触发的额外SQL查询将自动成为Django的Django Defaut Autocommit模式。

  结论:以上是如何使用Django模型为主要CTO注释的全部内容。感谢您阅读本网站的内容。我希望这对您有帮助。有关如何使用django模型的更多信息,请在此站点上找到它。