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

如何使用djangomodels(2023年的最新答案)

时间:2023-03-07 13:21:30 网络应用技术

  指南:本文的首席执行官注释将介绍有关djangomodels如何使用的相关内容。我希望这对每个人都会有所帮助。让我们来看看。

  Slugfield字段是替换“ - ”之后输入内容中的空间

  Django官方文件中Slogfield的描述如下:

  类Slugfield([max_length = 50,**选项])

  slug是一个新闻术语,通常是某物的简短标签。

  像查菲尔德一样,您可以指定max_length(请参阅此部分中数据库移植性的说明和max_length的说明)。如果未指定max_length,django将默认为50为50。

  field.db_index自动在slugfield字段中设置为true。

  通常,根据另一个值自动生成slugfield的值。

  您可以重写Save(),并在使用Slogfy方法转换数据后自动填充Slugfield。简单演示如下

  类测试(Models.Model):

  Q = model.Charfield(max_length = 30)

  s = model.slugfield()

  def保存(self,*args,** kwargs):

  self.s = slugify(self.q)

  超级(测试,自我).save(*args,** kwargs)

  通常,它主要用于URL正则表达式中的命名组。作为参数,在视图和URL之间传输

  Django模型对快速方法使用多语言支持。此方法通过创建自定义模板标签来实现多语言显示的目的来选择模型中的重复语言字段。

  假设我们有这样的模型。PY,并且某个模型包含多个重复字段。每个重复字段都用于保留其相应的显示语言:

  类myobject(models.model):

  name = models.charfield(max_length = 50)

  title_en = models.charfield(max_length = 50)

  title_es = models.charfield(max_length = 100)

  title_fr = models.charfield(max_length = 100)

  description_en = models.charfield(max_length = 100)

  description_es = models.charfield(max_length = 100)

  Description_fr = Models.Charfield(max_length = 100)

  类myotherobject(models.model):

  name = models.charfield(max_length = 50)

  content_en = models.charfield(max_length = 200)

  content_es = model.charfield(max_length = 200)

  content_fr = model.charfield(max_length = 200)

  请注意,我们将线条和语言代码作为相应字段背后的后缀,将用作语言搜索标记。

  然后,我们添加了一个需要在settings.py中翻译的字段名称:

  translation_fields =('title','description','content')

  将TemplateTags目录添加到项目目录(不要忘记任何家庭__init__.py),并构建lazy_tags.py:

  从django导入模板

  从设置导入translation_fields

  寄存器= template.library()

  类局部content(template.node):

  def __init __(self,model,landaging_code):

  self.model =模型

  self.lang = language_code

  def渲染(自我,上下文):

  模型= template.Resolve_variable(self.model,context)

  lang = template.resolve_variable(self.lang,context)

  对于translation_fields中的f:

  尝试:

  setAttr(型号,F,getAttr(型号,'%s_%s'%(f,lang)))

  除了attributeError:

  经过

  返回 '??'

  @register.tag(name ='get_localized_content')

  def get_lot_localized_content(解析器,令牌):

  bits = list(token.split_contents())

  如果Len(位)!= 3:

  rish template.templatesyntaxerror(“'get_localized_content'标签完全取2个参数”)

  返回局部content(model = bits [1],language_code = bits [2])

  为了在模板中使用自定义标签,我们首先加载:

  {%加载lazy_tags%}

  然后使用自定义标签,传递对象和语言代码,然后进行翻译。例如,西班牙语:

  {%get_localized_content对象'es'%}

  目前,如果没有语言代码可以通过,则不能使用obj.descript来调用某个语言字段。因此,我们与django.core.context_processors.request合作,上下文处理器::

  template_context_processors =(

  Em

  'django.core.context_processors.request',

  治愈

  我们可以在模板中使用它:

  {%get_localized_content oppect.language_code%}

  在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。然后使用上述数据迁移命令。目前,可以提示数据表数据表已经存在错误。不合理的模型已使用数据表映射。接下来,您只需要正常使用模型和数据表即可。

  在Python中,您可以将Python的安装环境添加到系统变量(我记得自动添加,您可以直接在DOS下运行Python)

  至于django,您可以直接运行到django-admin

  StartProject

  mysite2(django-admin不使用.py),没有python

  django-admin.py

  StartProject

  mysite2(如果需要的话,您需要

  django.db.models.foreignkey在django中使用来定义更多关系。

  在定义中,必须设置一个参数,即on_delete。

  顾名思义,在删除关联表中的数据时,它是与其关联相关的字段行为。

  参数的值是:

  无:关联的数据同时删除;

  Models.Cascade:类似于无,默认被删除;

  models.do_nothing:什么都不做,不要报告错误;

  Models.Protect:防止删除并触发protectError报告错误;

  model.set_null:当前表相关数据的值设置为null(必须支持null,即null参数);

  models.set_default:当前关联数据的值设置为默认值(必须定义默认值);

  models.set(a):将当前相关数据的值设置为A(A是特定值或全局可呼叫函数);

  结论:以上是主要CTO的所有内容,都指出了有关djangomodels如何使用的内容。我希望这对每个人都会有所帮助。如果您仍然想了解有关此信息的更多信息,请记住收集并关注此网站。