将数据库表级约束添加到django模型的元

django-db-constraints的Python项目详细描述


#django db constraints

\

向django模型的元类添加数据库表级约束,并让“makemigrations”添加适当的迁移。

``python
class foo(model s.model):
bar=models.integerfield()
baz=models.integerfield()

class meta:
db-constraints={
“bar-equal baz”:“check(bar=baz)”,
}
```


这应该会生成如下迁移:

``python
类迁移(migrations.migration):

initial=true

dependencies=[
]

operations=[
migrations.createmodel(
name='foo',
fields=[
('id',models.autofield(auto_created=true,primary_key=true,serialize=false,verbose_name='id'),
('bar',models.integerfield()),
('baz',models.integerfield()),
],
django-db_-constraints.operations.alterconstraints(
name='foo',
db_constraints={bar_equal_baz':'check(bar=baz)},
],
]
`````


>应用的结果sql:

```sql
create table“sample_foo”(“id”serial not null主键,“bar”integer not null,“baz”整数不为空)
alter table“sample_foo”add constraint“bar_equal_baz”check(bar=baz)
````

](https://github.com/rapilabs/blog/blob/master/articles/same parent db pattern.md))

``python
类栏(models.model):
baz=models.integerfield()

class meta:
唯一的一个单元=('id',‘baz’)



foo类(models.model):
bar=models.foreign key(bar)
baz=models.integerfield()


class meta:
db-u-constraints={
‘composite-fk’:‘foreign-key(bar-id,baz)references sample-bar(id,baz)’,
}
````

结果是:

``sql
``alter table“sample_foo”add constraint“composite_fk”外键(bar_id,baz)引用sample_bar(id,baz)
```

它们只是添加到迁移操作列表的末尾。这包括删除约束中使用的字段的操作,因为数据库丢弃也将有任何相关的
约束(至少与PostgreSQL)。
BR/>警告> BR/> BR/>有可能在数据库中声明约束的情况下,但由于数据库丢失,数据库中不存在约束。当删除约束中的字段时隐式约束。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将jaxb插件扩展与gradlejaxbplugin一起使用   java Hibernate列表<Object[]>到特定对象   java使用多态性显示arraylist的输出   java水平堆叠卡,带有一定偏移量   java错误:找不到符号方法liesInt()   java客户机/服务器文件收发中的多线程流管理   在java中可以基于访问重载方法吗?   包含空元素的java排序数组   swing Java按钮/网格布局   java BottomNavigationView getmaxitemcount   java空指针异常字符串生成器   java Xamarin升级导致“类文件版本错误52.0,应为50.0”错误   java我正在尝试打印它,而不只是对每一行进行println   Tomcat7中的java是否需要复制上下文。将xml转换为conf/Catalina/locahost以使其生效   带有注入服务的java REST端点在何处引发自定义WebServiceException?   在Java中使用GPS数据   java如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?   内置Eclipse期间的Java 8堆栈溢出   java在GWT编译的JavaScript中如何表示BigDecimal