Skip to content

Commit c5ede5f

Browse files
committed
normalize field.verbose_name
1 parent d32fe9b commit c5ede5f

File tree

5 files changed

+388
-364
lines changed

5 files changed

+388
-364
lines changed

litestar_django/dto.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,9 @@ def get_field_type(cls, field: Field, type_map: dict[type[AnyField], Any]) -> An
100100
def get_field_constraints(cls, field: AnyField) -> KwargDefinition:
101101
constraints = {}
102102
if isinstance(field, Field):
103-
constraints["title"] = field.verbose_name
103+
constraints["title"] = (
104+
str(field.verbose_name) if field.verbose_name else field.name
105+
) # might be a proxy
104106

105107
if field.help_text:
106108
constraints["description"] = field.help_text
@@ -153,7 +155,7 @@ def get_field_constraints(cls, field: AnyField) -> KwargDefinition:
153155
else:
154156
constraints["title"] = field.name
155157

156-
return KwargDefinition(**constraints)
158+
return KwargDefinition(**constraints) # type: ignore[arg-type]
157159

158160
@classmethod
159161
def create_constraints_for_validator(

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "litestar-django"
3-
version = "0.1.0"
3+
version = "0.1.1"
44
description = "Django model support for Litestar"
55
readme = "README.md"
66
license = { text = "MIT" }

tests/some_app/app/models.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import enumfields
55
from django.core import validators
66
from django.db import models
7+
from django.utils.translation import gettext
78

89

910
class StdEnum(str, enum.Enum):
@@ -117,6 +118,11 @@ class ModelWithFields(models.Model):
117118
max_length=100,
118119
)
119120

121+
field_with_non_string_verbose_name = models.CharField(
122+
max_length=100,
123+
verbose_name=gettext("Some field"),
124+
)
125+
120126

121127
class ModelInvalidRegexValidator(models.Model):
122128
invalid_regex_validator = models.CharField(

tests/test_dto_field_definitions.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,22 @@ def test_basic_field_types() -> None:
311311
),
312312
)
313313

314+
assert field_defs[
315+
"field_with_non_string_verbose_name"
316+
] == DTOFieldDefinition.from_field_definition(
317+
model_name="ModelWithFields",
318+
default_factory=None,
319+
dto_field=DTOField(),
320+
field_definition=FieldDefinition.from_annotation(
321+
str,
322+
name="field_with_non_string_verbose_name",
323+
kwarg_definition=KwargDefinition(
324+
title="Some field",
325+
max_length=100,
326+
),
327+
),
328+
)
329+
314330

315331
def test_invalid_regex_validator() -> None:
316332
dto_type = DjangoModelDTO[ModelInvalidRegexValidator]

0 commit comments

Comments
 (0)