首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django 自定义用户 VS 用户资料

然而,如果我们需要更详细的用户资料管理,比如添加更多的字段或者自定义验证规则,Django允许我们自定义用户模型。...1、问题背景在 Django 1.5.1 中,我使用自定义用户,就像官方文档中描述的那样。我发现所有内容都存储在一个表中,即 auth_user 表。...如果我们要为用户添加 20 个新信息字段,那么将所有内容都放在 auth_user 中似乎很奇怪。...使用旧方法,您必须连接辅助表才能获取用户的全部信息。通常,当您看到一对一的关系时,最好将它们合并到一个表中。但新的自定义用户模型还解决了另一个问题,即用户应该具有哪些属性?...那么您可以将它们放在单独的表中,并且不会出现太多问题或性能下降。否则,最好将它们存储在与用户相同的表中。方案二: 使用自定义用户模型时,您可以控制哪些字段包含在用户模型中。

10710

django 1.8 官方文档翻译: 2-5-2 进行原始的sql查询

django默认它会返回一个数据集,但这不是强制性的。如果查询的结果不是数据集,则会产生一个错误。...例如,如果你的表中包含值‘abc’和‘def’,你查询‘where mycolumn=0’,那么两行都会匹配。要防止这种情况,在查询中使用值之前,要做好正确的类型转换。...例如,__bool__()和__len__()在RawQuerySet中没有被定义,所以所有RawQuerySet转化为布尔值的结果都是True。...只有first_name字段在raw()查询中获取,last_name字符按在执行打印命令时才被获取。 只有一种字段不可以被省略,就是主键。...Django 使用主键来识别模型的实例,所以它在每次原始查询中都必须包含。如果你忘记包含主键的话,会抛出一个InvalidQuery异常。 增加注解 你也可以在查询中包含模型中没有定义的字段。

94320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django学习-第十三讲(下):表单(一)forms.form、forms.modelform

    Django中的表单 Django中的表单丰富了传统的HTML语言中的表单。在Django中的表单,主要做以下两件事 渲染表单模板。 表单验证数据是否合法。...2.3. django 表单自定义验证 有时候对一个字段验证,不是一个长度,一个正则表达式能够写清楚的,还需要一些其他复杂的逻辑,那么我们可以对某个字段,进行自定义的验证。...3. django表单的 Modelform 大家在写表单的时候,会发现表单中的Field和模型中的Field基本上是一模一样的,而且表单中需要验证的数据,也就是我们模型中需要保存的。...使用ModelForm,因为字段都不是在表单中定义的,而是在模型中定义的,因此一些错误消息无法在字段中定义。...那么这时候可以在Meta类中,定义error_messages,然后把相应的错误消息写到里面去。

    3.3K40

    Django 自定义后台

    个人学习笔记,参考 django 官方文档:https://docs.djangoproject.com/zh-hans/3.2/ 一、自定义后台   Django 提供了相应的接口供我们自定义 Django...polls这是我们自己写的应用,我们是在admin.py 里注册到后台的,对应的后台配置也在这里。 polls/admin.py # django的接口,默认已经引入。...只有两个字段,我们可以调一下字段的顺序,如果有十个字段呢?   我们可以为他们分组,像这样。...我们在之前就把 Choice 表给注册了,似乎已经关联数据表了,但这样非常的低效,高效的设计是我们在创建一个新的投票问题时就设置好他的选项。...当然,Django 官方文档还对展示页面等等进行了自定义,这块我没继续学习! 三、Simple UI 快速上手   根据 Django 的官方文档,你完全可以自定义后台的各各方面!

    67210

    第21篇-使用Django进行ElasticSearch的简单方法

    07.Elasticsearch中的映射方式—简洁版教程 08.Elasticsearch中的分析和分析器应用 09.在Elasticsearch中构建自定义分析器 10.Kibana科普-作为Elasticsearhc...在搜索了如何使用Django正确实现ElasticSearch的很长时间之后,我并没有真正找到令人满意的答案。...一些指南或教程令人费解,似乎正在采取不必要的步骤来将数据索引到ElasticSearch中。有关如何执行搜索的信息很多,但有关如何完成索引的信息却不多。...我们将很快讨论一些示例,但首先我需要阐明我们要完成的工作: ● 在我们的本地计算机上设置ElasticSearch并确保其正常运行 ● 设置一个新的Django项目 ● 批量索引数据库中已经存在的数据...该DocType作品的包装,让你写一个指数就像一个模型各字段,以便他们得到正确的格式,当他们得到索引。 在Meta内部,您告诉ElasticSearch您想要索引的名称。

    3.3K00

    第 11 篇:基于 drf-haystack 的文章搜索接口

    作者:HelloGitHub-追梦人物 在 django 博客教程中,我们使用了 django-haystack 和 Elasticsearch 进行文章内容的搜索。...但是,django-rest-framework 并没有提供这些比较个性化需求的序列化字段,因此接下来我们接触 drf 的一点高级用法——自定义序列化字段。...在我们自定义的逻辑中,首先调用父类 CharField 的 to_representation 方法,父类序列化的逻辑是将任何输入的值都转为字符串;接着我们从 context 属性中取得 request...对象,这个对象就是视图中的 HTTP 请求对象,但是因为 django 中 request 对象无法像 flask 那样从全局获取,因此 drf 在视图中将其保存在了序列化器和序列化字段的 context...最后别忘了在 fields 中申明全部序列化的字段,主要是把新增的 summary 加进去。

    1.6K20

    关于“Python”的核心知识点整理大全55

    P\d+)捕获的值,并将其存储到topic_id中(见1)。在2处,我们使用get()来获取 指定的主题,就像前面在Django shell中所做的那样。...18.5 小结 在本章中,你首先学习了如何使用Django框架来创建Web应用程序。你制定了简要的项目规 范,在虚拟环境中安装了Django,创建了一个项目,并核实该项目已正确地创建。...你还探索了Django shell,它让你能够在终端会话中处理项目的数据。你学习了如何定义URL、 创建视图函数以及编写为网站创建网页的模板。...这些工作很多都是由 Django自动完成的。 在Django中,创建表单的最简单方式是使用ModelForm,它根据我们在第18章定义的模型中 的信息自动创建表单。...最简单的ModelForm版本只包含一个内嵌的Meta类,它告诉Django根据哪个模型创建表单,以 及在表单中包含哪些字段。

    16610

    Django DjangoFilterBackend django-filter

    djangorestframework==3.8.2 django-filter==2.0.0 #2 需求 获取某些数据时,需要按某些字段过滤 过滤时,有些的字段是 “跨表” 的字段,该如何处理 过滤时...,有些字段是 “区间” 字段(比如时间),该如何处理 过滤时,有些字段是 “跨表” 后的 “区间” 字段,又该如何处理 #3 起步 #3.1 新建一个Django项目 . ├── app │ ├──...注意 : 在url的参数中,原来我们在filters.py中定义的变量是 “RegDate”,到了url中变成了 “RegDate_after” 和 “RegDate_before”,这是框架给我设定好的区间变量...坑 使用Q时,一定不能使用or / and,只能使用 | & return 的数值,如果使用queryset.filter(xxx).filter(xxx),那么返回的结果是所有过滤的交集,如果每个自定义函数都返回自己过滤的数据...(例如,models.Student.objects.filter().filter()),那么过滤的结果是所有符合条件的并集 value的正确使用,value.start对应的是url中的min(salary_min

    1.6K20

    Django权限机制的实现

    Django其实包含了object permission的框架,但没有具体实现,object permission的实现需要借助第三方app django-guardian,我们在开发中用调用django...在model中创建自定义权限,从系统开发的角度,可理解为创建系统的内置权限,如果需求中涉及到用户使用系统时创建自定义权限,则要通过下面方法: from myapp.models import BlogPost...,这个信息是在django admin中设置权限时显示的信息 第二步,建立一个权限表Permission, 将权限的名称,url名称,请求方法(get or post), 参数列表保存进去 第三步, 定义判断权限的方法...第三步: 定义权限验证方法, 逻辑是这样,请求访问学员列表, 先获取url地址,根据url地址得到urlname, 再获取请求方法和参数,然后使用urlname, 请求方法,参数列表到数据库中查询,能查询到之后说明这个权限存在...但似乎还少了点什么,在权限验证方法里,当检测没有权限时返加403页面,所以我们还要创建一个403页面403.html: <!

    1.1K10

    django之文件上传下载等相关

    那么就是这样写: {{ form.qq.label_tag }}#表示在form 里面定义这个字段的名称 {{ form.qq }}#根据这个字段在form定义的类型来决定。假设是char类型。...那就是文本框 {{ form.qq.errors.as_text }}表示如果表单字段验证失败的话,这个代表错误信息 {{ form.qq.help_text }}如果你在form里定义了这个字段的帮助信息的话...二、基于表单上传文件 在Django中我们可以采用Form类来处理表单,通过实例化处理和在模板中渲染,就可以轻松完成表单的需求,采用django的表单处理方式,能帮我们省去很多的工作,比如验证不能为空...,或者要符合某种模式的输入才有效,这些处理起来非常方便,不用自己再单独写代码去验证表单的数据正确性,所以在开发中比较常用,Form提供了很多表单字段,比如日期,文本类型等,如果你熟悉基本的html,学起来会非常容易上手...直接上代码: 在models.py中,需要建立模型,这里使用了ImageField字段,用来存储图片路径,这个字段继承了FileField字段,本质上是一样的。

    3.1K30

    Django学习笔记之Queryset详解

    manager类,而不是自定义QuerySet类,一般的我们没有自定义QuerySet类的必要;django.db.models模块中的Model类,我们定义表的model时,就是继承它,它的功能很强大...我们修改一下代码,如下,遍历一开始也是先执行查询得到a,但当执行print (e.blog.name)时,还需要再次查询数据库获取blog实体。...在UserJob中定义User为外键,在Job中定义与User是ManyToMany >>> a = User.objects.filter(is_active=True, userjob__is_active...,即使在查询时关联了其它表,关联表的字段也不会返回,只有当我们通过Author instance用关联表时,Django才会再次查询数据库获取值。...看下面两段代码,这两段代码在1.1中提到过。在代码1中,在遍历a前,先执行a对应的SQL,拿到数据后,然后再遍历a,而遍历过程中,每次都还要查询数据库获取关联表。

    2.7K30

    彻底搞懂Django中的数据迁移

    Django 为了保护程序员的头发,附带了一个对象关系映射器(简称 ORM),可以将数据库 SQL 映射到面向对象的 Python 中来,使得你可以在 Django 中像操作普通对象一样操作数据库。...在执行 makemigrations 指令时,Django 不会检查你的数据库,而是根据目前的模型的状态,创建一个操作列表,使项目状态与模型定义保持最新。...输出中似乎有很多不认识的迁移,不要虚,那些是 Django 自身运行所需要的表。关键是这个 Applying mig.0001_initial... OK,表示 mig 的迁移已经成功了。...这样子的结果就是 Model 和数据库字段不一致,在进行相关 ORM 操作时就会出现各种报错。 不要以为这种情况很少见,新手在不正常操作迁移的过程中是有可能发生的。...也就是说,migrate --fake 指令可以修改 django_migrations 表中的记录,但并不会真正的修改数据库本身。 希望你永远都用不到 --fake。 ?

    6.4K20

    Django 1.10中文文档-第一个应用Part5-测试

    如果你学习Django就是仅仅是为了创建一个小小投票应用,那么涉足自动化测试显然没有必要。 但如果不是这样,现在是一个很好的学习机会。...测试可以节约开发时间 某种程度上,“检查并发现工作正常”似乎是种比较满意的测试结果。但在一些复杂的应用中,你会发现组件之间存在各种各样复杂的交互关系。...看起来似乎有点反人类,但实际上这种方法与大多数人经常的做法很相似:先描述一个问题,然后编写代码来解决这个问题。测试驱动开发可以简单地用Python测试用例将问题格式化。...事实上,这是测试驱动开发的一个简单的例子,但做的顺序并不真的重要。在我们的第一个测试中,我们专注于代码内部的行为。 在这个测试中,我们想要通过浏览器从用户的角度来检查它的行为。...如果你当前settings.py中的的TIME_ZONE不正确,那么你或许得不到预期的结果。在进行下一步之前,请确保时区设置正确。

    1K60

    第15篇-使用Django进行ElasticSearch的简单方法

    07.Elasticsearch中的映射方式—简洁版教程 08.Elasticsearch中的分析和分析器应用 09.在Elasticsearch中构建自定义分析器 10.Kibana科普-作为Elasticsearhc...在搜索了如何使用Django正确实现ElasticSearch的很长时间之后,我并没有真正找到令人满意的答案。似乎正在采取不必要的步骤来将数据索引到ElasticSearch中。...还有elasticsearch-dsl,它是在前者的基础上构建的,但是它提供了更高层次的抽象,但功能却有所减少。...● 用户保存到数据库的每个新实例的索引 ● 基本搜索示例 好吧,这似乎很简单。...该 DocType 作品的包装,让你写一个指数就像一个模型,并 Text 与 Date 各字段,以便他们得到正确的格式,当他们得到索引。

    5.3K00

    关于“Python”的核心知识点整理大全56

    在3处,我们显示表单,从中可知Django使得完 成显示表单等任务有多简单:我们只需包含模板变量{{ form.as_p }},就可让Django自动创建显 示表单所需的全部字段。...修饰符as_p让Django以段落格式渲染所有表单元素,这是一种整洁地显 示表单的简单方式。 Django不会为表单创建提交按钮,因此我们在4处定义了一个这样的按钮。 6....用于添加新条目的表单 我们需要创建一个与模型Entry相关联的表单,但这个表单的定制程度比TopicForm要高些: forms.py from django import forms from...在2处,我们定义了属性widgets。小部件(widget)是一个HTML表单元素,如单行文本框、 多行文本区域或下拉列表。通过设置属性widgets,可覆盖Django选择的默认小部件。...我们将new_entry的属性topic设置为在这个 函数开头从数据库中获取的主题(见6),然后调用save(),且不指定任何实参。这将把条目保 存到数据库,并将其与正确的主题相关联。

    14010

    37.Django1.11.6文档

    当你最初获取数据时不知道是否需要这些特定字段的情况下,如果你正在使用查询集的结果,你可以告诉Django不要从数据库中检索它们。...举个例子,你也许会有个BlogComment模型,并且你还想创建一个表单让大家提交评论到这个模型中。 在这种情况下,在表单中定义字段将是冗余的,因为你已经在模型中定义了字段。...记住 prefix 在POST请求和非POST 请求中均需设置,以便他能渲染和执行正确 (11)表单和字段验证 表单验证发生在数据验证之后。 ...以编程方式创建权限 虽然custom permissions可以定义在模型的Meta类中,但你也可以直接创建权限。 ...3.自定义认证 Django自带的认证系统足够应付大多数情况,但你可能有特殊的需求,现成的默认认证系统不能满足。 自定义自己的项目的权限系统需要了解Django中哪些部分是能够扩展或替换的。

    24.4K80
    领券