Skip to content

Commit 4ac3d60

Browse files
authored
Change hint message for field-choices-constraint (#39)
Change hint message for `field-choices-constraint` `check=` was deprecated in Django5.1 See https://github.com/django/django/blob/55855bc6d0d2a270eb34952c578ee352389367ad/django/db/models/constraints.py#L165-L170
1 parent 8acb037 commit 4ac3d60

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

src/extra_checks/checks/model_field_checks.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,8 +306,9 @@ def apply(
306306
):
307307
return
308308
check = f'models.Q({in_name}=[{", ".join([self._repr_choice(c) for c in field_choices])}])'
309+
arg_name = "condition" if django.VERSION >= (5, 1) else "check"
309310
yield self.message(
310311
"Field with choices must have companion CheckConstraint to enforce choices on database level.",
311-
hint=f'Add to Meta.constraints: `models.CheckConstraint(name="%(app_label)s_%(class)s_{field.name}_valid", check={check})`',
312+
hint=f'Add to Meta.constraints: `models.CheckConstraint(name="%(app_label)s_%(class)s_{field.name}_valid", {arg_name}={check})`',
312313
obj=field,
313314
)

tests/test_model_field_checks.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -241,16 +241,18 @@ def test_field_choices_constraint(test_case):
241241
"blank_included",
242242
"integer_blank_invalid",
243243
}
244-
assert 'check=models.Q(partial__in=["S", "C"]))' in errors["partial"].hint
245-
assert "check=models.Q(missed__in=[1, 2]))" in errors["missed"].hint
244+
arg_name = "condition" if django.VERSION >= (5, 1) else "check"
245+
assert f'{arg_name}=models.Q(partial__in=["S", "C"]))' in errors["partial"].hint
246+
assert f"{arg_name}=models.Q(missed__in=[1, 2]))" in errors["missed"].hint
246247
assert (
247-
'check=models.Q(blank_missed__in=["A", "B", ""])' in errors["blank_missed"].hint
248+
f'{arg_name}=models.Q(blank_missed__in=["A", "B", ""])'
249+
in errors["blank_missed"].hint
248250
)
249251
assert (
250-
'check=models.Q(blank_included__in=["A", "B", ""])'
252+
f'{arg_name}=models.Q(blank_included__in=["A", "B", ""])'
251253
in errors["blank_included"].hint
252254
)
253255
assert (
254-
"check=models.Q(integer_blank_invalid__in=[1, 2])"
256+
f"{arg_name}=models.Q(integer_blank_invalid__in=[1, 2])"
255257
in errors["integer_blank_invalid"].hint
256258
)

0 commit comments

Comments
 (0)