将数据库表级约束添加到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/>有可能在数据库中声明约束的情况下,但由于数据库丢失,数据库中不存在约束。当删除约束中的字段时隐式约束。
\
向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/>有可能在数据库中声明约束的情况下,但由于数据库丢失,数据库中不存在约束。当删除约束中的字段时隐式约束。