首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django:有办法在"unique_together“中添加外键字段吗?

Django:有办法在"unique_together“中添加外键字段吗?
EN

Stack Overflow用户
提问于 2016-06-28 08:14:02
回答 2查看 3.9K关注 0票数 4

我希望能够使模型在来自外键模型的值上是唯一的。不确定在django是否有这种可能。

例句:我有一个模特儿A:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class modelA(models.Model):
    fieldA1 = models.AutoField(primary_key=True)
    fieldA2 = models.CharField(max_length=20)

也包括模式B:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class modelB(models.Model):
    fieldB1 = models.CharField(max_length=20)
    fieldB2 = models.ForeignKey(modelA)

    class Meta:
        unique_together = ('fieldB1', 'fieldB2',<<'fieldA2'>>)

我想添加fieldA2作为B模型的unique_together子句中的一个属性,这在Django中可能吗?我不能那样做-

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
unique_together = ('fieldB1', 'fieldB2','modelA__fieldA2')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-28 08:30:55

你不能。数据库约束不能包含此类数据。在创建实例或编写验证程序之前,您必须以编程方式检查它。

票数 3
EN

Stack Overflow用户

发布于 2020-03-11 18:34:11

您可以像这样覆盖modelBclean方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class ModelB(models.Model):
    fieldB1 = models.CharField(max_length=20)
    fieldB2 = models.ForeignKey(modelA)

    def clean(self):
        """
        Validate 'fieldB1', 'fieldB2' and 'fieldB2__fieldA2' are unique together
        """
        # first, check that foreign keys fields exist. Must use '_id', or else a RelatedObjectDoesNotExist error will be raised
        if self.fieldB2_id and self.fieldB2.field_A2_id:
            if self.__class__.objects.filter(fieldB1=self.fieldB1, fieldB2=self.fieldB2, fieldB2__fieldA2=self.fieldB2.fieldA2).exists():
                raise ValidationError(
                    _('Instance of ModelB with fieldB1, fieldB2 and fieldB2.fieldA2 already exists.'),
                    code='unique_together',
                )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38081310

复制
相关文章
Django学习-第七讲:django 中的常用字段、字段属性,外键和表关系、外键操作
映射到数据库中是int类型,可以有自动增长的特性。一般不需要使用这个类型,如果不指定主键,那么模型会自动的生成一个叫做id的自动增长的主键。如果你想指定一个其他名字的并且具有自动增长的主键,使用AutoField也是可以的。
小海怪的互联网
2019/10/08
4K0
django admin list_filter 显示外键字段
models.py class Node(models.Model): """ 节点表 """ name = models.CharField(max_length=128, unique=True, verbose_name="节点名称") # SlugField 是一个新闻术语(通常叫做短标题)。一个slug只能包含字母、数字、下划线或者是连字符,通常用来作为短标签。通常它们是用来放在地址栏的URL里的。 # 像CharField一样,你可以指定max_
卓越笔记
2023/02/18
9840
django开发中关于外键设置
我们要把源码中的db_constraint设置成Flase这样就有关联关系,但是不会受他约数
小小咸鱼YwY
2019/09/11
1.4K0
graphviz dot 字段连接外键
图片1.png digraph "G" { graph [fontname = "Microsoft YaHei" rankdir = "LR" label=""] node [fontname = "Microsoft YaHei" shape = "record" ] edge [fontname = "Microsoft YaHei" arrowhead = "none" ] <A> [label = "A|<id>id|<B_id>B_id"] <B>
林万程
2022/01/09
1.3K0
graphviz dot 字段连接外键
Django Sqlite 数据库,在已有表中添加新字段
可以通过 migrate 传递上一次迁移的编号来撤销迁移。 例如,要撤销最近一次迁移 0020_auto_20220520_1511,进入迁移文件,找到dependencies中信息
沈宥
2022/06/21
4K0
Django Sqlite 数据库,在已有表中添加新字段
c# (nop中)下拉列表(有外键)
1.在操作的界面Model中建立public List<SelectListItem> xxx(取名){ get; set; }
wfaceboss
2019/04/08
9520
Django之ORM 外键关联(三)
Django 的 ORM 是创建 SQL 去查询和操作数据库的一个 Python 式的方式。
小团子
2019/07/18
2.2K0
Django之ORM 外键关联(三)
Django(15)外键和表关系[通俗易懂]
如果一个模型使用了外键。那么在对方那个模型被删掉后,该进行什么样的操作。可以通过on_delete来指定。可以指定的类型如下:
全栈程序员站长
2022/09/19
2.1K0
Django中基表的创建、外键字段属性简介、脏数据概念、子序列化
通过图书管理系统引入多表操作:如果我们创建表的方式是先抽象出表与表之间相同的字段建一个父类,然后在用每个表类去继承这个父类,如下面的代码,我们将无法得到期望的表字段。
GH
2019/12/30
4.4K0
MySQL外键有什么作用
保持数据一致性,完整性,主要目的是控制存储在外键表中的数据。使两张表形成关联,外键只能引用外表中列的值!
星哥玩云
2022/08/16
4.7K0
Django model update foreign key 外键更新
parent model: master.anken(primary key:id→anken_no) ※ id:自動生成
刀枪不入de王二花
2022/07/20
1.1K0
Django model update foreign key 外键更新
Django项目知识点(三)
模型是数据唯一而且准确的信息来源。它包含正在储存的数据的重要字段和行为。一般来说,每一个模型都映射一个数据库表。
润森
2019/09/20
1.9K0
Django项目知识点(三)
探索 Python/Django 支持分布式多租户数据库,如 Postgres+Citus
在 确定分布策略 中,我们讨论了在多租户用例中使用 Citus 所需的与框架无关的数据库更改。在这里,我们专门研究如何借助 django-multitenant 库将多租户 Django 应 用程序迁移到 Citus 存储后端。
为少
2022/05/18
2.1K0
探索 Python/Django 支持分布式多租户数据库,如 Postgres+Citus
django 1.8 官方文档翻译: 2-1-3 元选项 (初稿)
如果 abstract = True, 就表示模型是 抽象基类 (abstract base class).
ApacheCN_飞龙
2022/11/27
8270
点击加载更多

相似问题

django中有可以有多个外键字段的字段吗?

20

在DJANGO模型中添加条件外键字段

12

如何在Django中添加带有泛型外键的unique_together

15

Django在外键字段中添加下划线,有办法删除它吗?

13

在django中搜索外键字段

126
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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