当前位置: 首页>>代码示例>>Python>>正文


Python models.CheckConstraint方法代码示例

本文整理汇总了Python中django.db.models.CheckConstraint方法的典型用法代码示例。如果您正苦于以下问题:Python models.CheckConstraint方法的具体用法?Python models.CheckConstraint怎么用?Python models.CheckConstraint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在django.db.models的用法示例。


在下文中一共展示了models.CheckConstraint方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_check_constraints

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_check_constraints(self):
        class Model(models.Model):
            age = models.IntegerField()

            class Meta:
                constraints = [models.CheckConstraint(check=models.Q(age__gte=18), name='is_adult')]

        errors = Model.check()
        warn = Warning(
            '%s does not support check constraints.' % connection.display_name,
            hint=(
                "A constraint won't be created. Silence this warning if you "
                "don't care about it."
            ),
            obj=Model,
            id='models.W027',
        )
        expected = [] if connection.features.supports_table_check_constraints else [warn, warn]
        self.assertCountEqual(errors, expected) 
开发者ID:nesdis,项目名称:djongo,代码行数:21,代码来源:test_models.py

示例2: test_eq

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_eq(self):
        check1 = models.Q(price__gt=models.F('discounted_price'))
        check2 = models.Q(price__lt=models.F('discounted_price'))
        self.assertEqual(
            models.CheckConstraint(check=check1, name='price'),
            models.CheckConstraint(check=check1, name='price'),
        )
        self.assertNotEqual(
            models.CheckConstraint(check=check1, name='price'),
            models.CheckConstraint(check=check1, name='price2'),
        )
        self.assertNotEqual(
            models.CheckConstraint(check=check1, name='price'),
            models.CheckConstraint(check=check2, name='price'),
        )
        self.assertNotEqual(models.CheckConstraint(check=check1, name='price'), 1) 
开发者ID:nesdis,项目名称:djongo,代码行数:18,代码来源:tests.py

示例3: test_from_model_constraints

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_from_model_constraints(self):
        class ModelWithConstraints(models.Model):
            size = models.IntegerField()

            class Meta:
                constraints = [models.CheckConstraint(check=models.Q(size__gt=1), name='size_gt_1')]

        state = ModelState.from_model(ModelWithConstraints)
        model_constraints = ModelWithConstraints._meta.constraints
        state_constraints = state.options['constraints']
        self.assertEqual(model_constraints, state_constraints)
        self.assertIsNot(model_constraints, state_constraints)
        self.assertIsNot(model_constraints[0], state_constraints[0]) 
开发者ID:nesdis,项目名称:djongo,代码行数:15,代码来源:test_state.py

示例4: test_create_model_with_constraint

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_create_model_with_constraint(self):
        where = models.Q(pink__gt=2)
        check_constraint = models.CheckConstraint(check=where, name='test_constraint_pony_pink_gt_2')
        operation = migrations.CreateModel(
            "Pony",
            [
                ("id", models.AutoField(primary_key=True)),
                ("pink", models.IntegerField(default=3)),
            ],
            options={'constraints': [check_constraint]},
        )

        # Test the state alteration
        project_state = ProjectState()
        new_state = project_state.clone()
        operation.state_forwards("test_crmo", new_state)
        self.assertEqual(len(new_state.models['test_crmo', 'pony'].options['constraints']), 1)

        # Test database alteration
        self.assertTableNotExists("test_crmo_pony")
        with connection.schema_editor() as editor:
            operation.database_forwards("test_crmo", editor, project_state, new_state)
        self.assertTableExists("test_crmo_pony")
        with connection.cursor() as cursor:
            with self.assertRaises(IntegrityError):
                cursor.execute("INSERT INTO test_crmo_pony (id, pink) VALUES (1, 1)")

        # Test reversal
        with connection.schema_editor() as editor:
            operation.database_backwards("test_crmo", editor, new_state, project_state)
        self.assertTableNotExists("test_crmo_pony")

        # Test deconstruction
        definition = operation.deconstruct()
        self.assertEqual(definition[0], "CreateModel")
        self.assertEqual(definition[1], [])
        self.assertEqual(definition[2]['options']['constraints'], [check_constraint]) 
开发者ID:nesdis,项目名称:djongo,代码行数:39,代码来源:test_operations.py

示例5: test_add_constraint

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_add_constraint(self):
        project_state = self.set_up_test_model("test_addconstraint")
        gt_check = models.Q(pink__gt=2)
        gt_constraint = models.CheckConstraint(check=gt_check, name="test_add_constraint_pony_pink_gt_2")
        gt_operation = migrations.AddConstraint("Pony", gt_constraint)
        self.assertEqual(
            gt_operation.describe(), "Create constraint test_add_constraint_pony_pink_gt_2 on model Pony"
        )
        # Test the state alteration
        new_state = project_state.clone()
        gt_operation.state_forwards("test_addconstraint", new_state)
        self.assertEqual(len(new_state.models["test_addconstraint", "pony"].options["constraints"]), 1)
        Pony = new_state.apps.get_model("test_addconstraint", "Pony")
        self.assertEqual(len(Pony._meta.constraints), 1)
        # Test the database alteration
        with connection.schema_editor() as editor:
            gt_operation.database_forwards("test_addconstraint", editor, project_state, new_state)
        with self.assertRaises(IntegrityError), transaction.atomic():
            Pony.objects.create(pink=1, weight=1.0)
        # Add another one.
        lt_check = models.Q(pink__lt=100)
        lt_constraint = models.CheckConstraint(check=lt_check, name="test_add_constraint_pony_pink_lt_100")
        lt_operation = migrations.AddConstraint("Pony", lt_constraint)
        lt_operation.state_forwards("test_addconstraint", new_state)
        self.assertEqual(len(new_state.models["test_addconstraint", "pony"].options["constraints"]), 2)
        Pony = new_state.apps.get_model("test_addconstraint", "Pony")
        self.assertEqual(len(Pony._meta.constraints), 2)
        with connection.schema_editor() as editor:
            lt_operation.database_forwards("test_addconstraint", editor, project_state, new_state)
        with self.assertRaises(IntegrityError), transaction.atomic():
            Pony.objects.create(pink=100, weight=1.0)
        # Test reversal
        with connection.schema_editor() as editor:
            gt_operation.database_backwards("test_addconstraint", editor, new_state, project_state)
        Pony.objects.create(pink=1, weight=1.0)
        # Test deconstruction
        definition = gt_operation.deconstruct()
        self.assertEqual(definition[0], "AddConstraint")
        self.assertEqual(definition[1], [])
        self.assertEqual(definition[2], {'model_name': "Pony", 'constraint': gt_constraint}) 
开发者ID:nesdis,项目名称:djongo,代码行数:42,代码来源:test_operations.py

示例6: test_remove_constraint

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_remove_constraint(self):
        project_state = self.set_up_test_model("test_removeconstraint", constraints=[
            models.CheckConstraint(check=models.Q(pink__gt=2), name="test_remove_constraint_pony_pink_gt_2"),
            models.CheckConstraint(check=models.Q(pink__lt=100), name="test_remove_constraint_pony_pink_lt_100"),
        ])
        gt_operation = migrations.RemoveConstraint("Pony", "test_remove_constraint_pony_pink_gt_2")
        self.assertEqual(
            gt_operation.describe(), "Remove constraint test_remove_constraint_pony_pink_gt_2 from model Pony"
        )
        # Test state alteration
        new_state = project_state.clone()
        gt_operation.state_forwards("test_removeconstraint", new_state)
        self.assertEqual(len(new_state.models["test_removeconstraint", "pony"].options['constraints']), 1)
        Pony = new_state.apps.get_model("test_removeconstraint", "Pony")
        self.assertEqual(len(Pony._meta.constraints), 1)
        # Test database alteration
        with connection.schema_editor() as editor:
            gt_operation.database_forwards("test_removeconstraint", editor, project_state, new_state)
        Pony.objects.create(pink=1, weight=1.0).delete()
        with self.assertRaises(IntegrityError), transaction.atomic():
            Pony.objects.create(pink=100, weight=1.0)
        # Remove the other one.
        lt_operation = migrations.RemoveConstraint("Pony", "test_remove_constraint_pony_pink_lt_100")
        lt_operation.state_forwards("test_removeconstraint", new_state)
        self.assertEqual(len(new_state.models["test_removeconstraint", "pony"].options['constraints']), 0)
        Pony = new_state.apps.get_model("test_removeconstraint", "Pony")
        self.assertEqual(len(Pony._meta.constraints), 0)
        with connection.schema_editor() as editor:
            lt_operation.database_forwards("test_removeconstraint", editor, project_state, new_state)
        Pony.objects.create(pink=100, weight=1.0).delete()
        # Test reversal
        with connection.schema_editor() as editor:
            gt_operation.database_backwards("test_removeconstraint", editor, new_state, project_state)
        with self.assertRaises(IntegrityError), transaction.atomic():
            Pony.objects.create(pink=1, weight=1.0)
        # Test deconstruction
        definition = gt_operation.deconstruct()
        self.assertEqual(definition[0], "RemoveConstraint")
        self.assertEqual(definition[1], [])
        self.assertEqual(definition[2], {'model_name': "Pony", 'name': "test_remove_constraint_pony_pink_gt_2"}) 
开发者ID:nesdis,项目名称:djongo,代码行数:42,代码来源:test_operations.py

示例7: test_add_constraints

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_add_constraints(self):
        """Test change detection of new constraints."""
        changes = self.get_changes([self.author_name], [self.author_name_check_constraint])
        self.assertNumberMigrations(changes, 'testapp', 1)
        self.assertOperationTypes(changes, 'testapp', 0, ['AddConstraint'])
        added_constraint = models.CheckConstraint(check=models.Q(name__contains='Bob'), name='name_contains_bob')
        self.assertOperationAttributes(changes, 'testapp', 0, 0, model_name='author', constraint=added_constraint) 
开发者ID:nesdis,项目名称:djongo,代码行数:9,代码来源:test_autodetector.py

示例8: test_repr

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_repr(self):
        check = models.Q(price__gt=models.F('discounted_price'))
        name = 'price_gt_discounted_price'
        constraint = models.CheckConstraint(check=check, name=name)
        self.assertEqual(
            repr(constraint),
            "<CheckConstraint: check='{}' name='{}'>".format(check, name),
        ) 
开发者ID:nesdis,项目名称:djongo,代码行数:10,代码来源:tests.py

示例9: test_deconstruction

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_deconstruction(self):
        check = models.Q(price__gt=models.F('discounted_price'))
        name = 'price_gt_discounted_price'
        constraint = models.CheckConstraint(check=check, name=name)
        path, args, kwargs = constraint.deconstruct()
        self.assertEqual(path, 'django.db.models.CheckConstraint')
        self.assertEqual(args, ())
        self.assertEqual(kwargs, {'check': check, 'name': name}) 
开发者ID:nesdis,项目名称:djongo,代码行数:10,代码来源:tests.py

示例10: test_add_meta_check_constraint__ok

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_add_meta_check_constraint__ok():
    with cmp_schema_editor() as editor:
        editor.add_constraint(Model, models.CheckConstraint(check=models.Q(field1__gt=0), name='field1_gt_0'))
    assert editor.collected_sql == timeouts(
        'ALTER TABLE "tests_model" ADD CONSTRAINT "field1_gt_0" '
        'CHECK ("field1" > 0) NOT VALID;',
    ) + [
        'ALTER TABLE "tests_model" VALIDATE CONSTRAINT "field1_gt_0";',
    ]
    assert editor.django_sql == [
        'ALTER TABLE "tests_model" ADD CONSTRAINT "field1_gt_0" CHECK ("field1" > 0);',
    ] 
开发者ID:tbicr,项目名称:django-pg-zero-downtime-migrations,代码行数:14,代码来源:test_schema.py

示例11: test_add_meta_check_constraint__with_flexible_timeout__ok

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_add_meta_check_constraint__with_flexible_timeout__ok():
    with cmp_schema_editor() as editor:
        editor.add_constraint(Model, models.CheckConstraint(check=models.Q(field1__gt=0), name='field1_gt_0'))
    assert editor.collected_sql == timeouts(
        'ALTER TABLE "tests_model" ADD CONSTRAINT "field1_gt_0" '
        'CHECK ("field1" > 0) NOT VALID;',
    ) + flexible_statement_timeout(
        'ALTER TABLE "tests_model" VALIDATE CONSTRAINT "field1_gt_0";',
    )
    assert editor.django_sql == [
        'ALTER TABLE "tests_model" ADD CONSTRAINT "field1_gt_0" CHECK ("field1" > 0);',
    ] 
开发者ID:tbicr,项目名称:django-pg-zero-downtime-migrations,代码行数:14,代码来源:test_schema.py

示例12: test_drop_meta_check_constraint__ok

# 需要导入模块: from django.db import models [as 别名]
# 或者: from django.db.models import CheckConstraint [as 别名]
def test_drop_meta_check_constraint__ok():
    with cmp_schema_editor() as editor:
        editor.remove_constraint(Model, models.CheckConstraint(check=models.Q(field1__gt=0), name='field1_gt_0'))
    assert editor.collected_sql == timeouts(
        'ALTER TABLE "tests_model" DROP CONSTRAINT "field1_gt_0";',
    )
    assert editor.django_sql == [
        'ALTER TABLE "tests_model" DROP CONSTRAINT "field1_gt_0";',
    ] 
开发者ID:tbicr,项目名称:django-pg-zero-downtime-migrations,代码行数:11,代码来源:test_schema.py


注:本文中的django.db.models.CheckConstraint方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。