首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在django视图中使用unique_together方法

如何在django视图中使用unique_together方法
EN

Stack Overflow用户
提问于 2014-05-20 13:21:14
回答 1查看 1K关注 0票数 1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Model1(models.Model):
     username = models.CharField(max_length=100,null=False,blank=False,unique=True)
     password = models.CharField(max_length=100,null=False,blank=False)

class Model2(models.Model):
     name = models.ForeignKey(Model1, null=True)
     unique_str = models.CharField(max_length=50,null=False,blank=False,unique=True)
     city = models.CharField(max_length=100,null=False,blank=False)
     class Meta:
           unique_together = (('name', 'unique_str'),)

我已经通过django管理页面在Model1中填写了3个用户名密码示例

在我看来,这份清单是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
userlist = Model1.objects.all()
#print userlist[0].username, userlist[0].password

for user in userlist:
     #here I want to get or create model2 object by uniqueness defined in meta class.
     #I mean unique_str can belong to multiple user so I'm making name and str together as a unique key but I dont know how to use it here with get_or_create method.
     #right now (without using unique_together) I'm doing this (but I dont know if this by default include unique_together functionality )
     a,b = Model2.objects.get_or_create(unique_str='f3h6y67')
     a.name = user
     a.city = "acity"
     a.save()
EN

回答 1

Stack Overflow用户

发布于 2014-05-20 14:10:07

我认为您的意思是,您的逻辑键是nameunique_together的组合,您要使用它作为调用get_or_create()的基础。

首先,理解unique_together创建了一个数据库约束。没有办法使用它,Django对这些信息也没有做什么特别的事情。

而且,此时Django不能使用复合的自然主键,因此在默认情况下,您的模型将有一个自动递增的整数主键。但是您仍然可以使用nameunique_str作为密钥。

看看您的代码,您似乎想这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a, _ = Model2.objects.get_or_create(unique_str='f3h6y67', 
                                    name=user.username)
a.city = 'acity'
a.save()

在Django 1.7上,您可以使用update_or_create()

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a, _ = Model2.objects.update_or_create(unique_str='f3h6y67', 
                                       name=user.username,
                                       defaults={'city': 'acity'})

在这两种情况下,关键是_or_create的关键字参数用于查找对象,而defaults用于在创建或更新的情况下提供额外的数据。见文献资料

总之,要“使用”unique_together约束,只要您想要唯一地指定一个实例,只需同时使用这两个字段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23770190

复制
相关文章
Django 教程 --- Django中的视图
Django视图是Django M V T结构的重要参与者之一。视图是用户界面,即您呈现网站时在浏览器中看到的内容。它由HTML / CSS / Javascript和Jinja文件表示。根据Django文档,视图函数是一个Python函数,它接受Web请求并返回Web响应。此响应可以是网页的HTML内容,重定向,404错误,XML文档或图像(Web浏览器可以显示的任何内容)
公众号---人生代码
2020/05/26
3K0
Django 教程 --- Django中的视图
第一季 | serializers 还有哪些操作没试过
Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2020/04/12
1.3K0
Django—视图
视图负责接受Web请求HttpRequest,进行逻辑处理,返回Web响应HttpResponse给请求者。
py3study
2020/01/16
4.5K0
Django—视图
django 视图中使用多线程
如果你需要在django视图中使用多线程执行其他任务,然后发现执行完后并没有达到你逾期的执行结果,
kirin
2021/04/09
2K0
Django 视图函数
定义视图 本质就是一个函数 视图的参数 一个HttpRequest实例 通过正则表达式组获取的位置参数 通过正则表达式组获得的关键字参数 在应用目录下默认有views.py文件,一般视图都定义在这个文件中 如果处理功能过多,可以将函数定义到不同的py文件中 新建views1.py #coding:utf-8 from django.http import HttpResponse def index(request): return HttpResponse("你好") 在urls.py中
Lansonli
2021/10/09
5770
Django 视图层
PyCharm可以使用virtualenv中的功能来创建虚拟环境。PyCharm紧密集成了virtualenv,所以只需要在setting中配置即可创建虚拟环境。而且PyCharm捆绑了virtualenv,我们不需要单独安装,一般创建过程如下:
py3study
2020/01/19
1.7K0
Django装饰器的使用 (类视图)
为了理解方便,我们先来定义一个为函数视图准备的装饰器(在设计装饰器时基本都以函数视图作为考虑的被装饰对象),及一个要被装饰的类视图。
kirin
2021/02/04
1.1K0
Django中的url与视图详解(2)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
xbhog
2019/09/08
1.1K0
Django中的url与视图详解(3)
可能你学习到这里,感觉好乱,所将的知识点没有一丝的关联,这个是没有办法的,Django与Flask有所不同的,Django是结构化的,每个模块都有知识点,我们只有先了解、学会了才能在后面的项目中游刃有余,坚持,话不多说,请看见天的操作。
xbhog
2019/09/08
1.5K0
Django 2.1.7 视图
上一篇中讲诉了Django关于模型的设计以及数据操作,本篇章就来继续讲解关于模板的内容。
Devops海洋的渔夫
2019/06/11
7420
Django 2.1.7 视图
Django2.0中文(通用视图)
1、通用视图 urls.py: from django.views.generic import TemplateView path(r'about/',TemplateView.as_view(template_name="about.html")), 2、通用视图 about.html xx/templates/about.html
用户5760343
2022/05/14
7360
Django中的url与视图详解(1)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
xbhog
2019/09/08
1.3K0
探索 Python/Django 支持分布式多租户数据库,如 Postgres+Citus
在 确定分布策略 中,我们讨论了在多租户用例中使用 Citus 所需的与框架无关的数据库更改。在这里,我们专门研究如何借助 django-multitenant 库将多租户 Django 应 用程序迁移到 Citus 存储后端。
为少
2022/05/18
2.1K0
探索 Python/Django 支持分布式多租户数据库,如 Postgres+Citus
Django - - - -视图层之视图函数(views)
视图层之视图函数(views) 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你的Python目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了将代码放在某处,约定是将视图放置在项目或应用程序目录中的名为views.py的文件中。 视图函数:     一
用户1214487
2018/01/24
1.6K0
Django - - - -视图层之视图函数(views)
Django之视图层
  一个视图函数,简称视图,是一个简单的python函数,接收web请求并返回web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误等。在函数中必须写一个request的参数,然后必须要有返回值,中间的逻辑随便,整个函数写在哪里也无所谓,只要python目录下就行,但我们默认规定,视图函数一般都写在每个应用下面views.py文件里。
py3study
2020/01/19
1.7K0
Django 2.1.7 类视图
Django 2.1.7 创建应用模板 Django 2.1.7 配置公共静态文件、公共模板路径 Django 2.1.7 模板语言 - 变量、标签、过滤器、自定义过滤器、模板注释 Django 2.1.7 模板继承 Django 2.1.7 模板 - HTML转义 Django 2.1.7 模板 - CSRF 跨站请求伪造 Django 2.1.7 模板 - 图片验证码的实现 Django 2.1.7 模板 - 动态URL 反向解析 Django 2.1.7 模板 - 动态配置静态文件路径
Devops海洋的渔夫
2019/07/15
6930
Django 2.1.7 类视图
django 入门:通用视图类重构视图
博客:https://www.jianshu.com/p/8cdf099e974f
陈宇明
2020/12/15
8910
django 入门:通用视图类重构视图
Django 之视图篇
<font color="red">欢迎阅读本专栏其他文章</font> Django 之路由篇 Django 之 Models(Models 模型 & 数据表关系) Django 之模板篇 views 视图 视图概述 视图即视图函数,接收web请求并返回web响应的事务处理函数 响应指符合http协议要求的任何内容,包括json,string,html等 本章忽略事务处理,重点在如何处理返回结果上 其他简单视图 django.http 给我们提供了很多和HttpResponse类似的简单视图,通过查看dj
ruochen
2021/05/12
1.1K0
Django 之视图篇
点击加载更多

相似问题

如何在django中使用unique_together?

13

Django:如何在模型中验证unique_together

30

如何在Django中使用ModelForm字段验证unique_together?

12

带有特定过滤器的Django unique_together (如: somefield=somevalue)

11

Django - unique_together选项,在表单中使用覆盖保存方法

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文