Skip to content

Commit e24b06c

Browse files
committed
Fix description for array-like fields
1 parent d3a8e6c commit e24b06c

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

src/python-fastui/fastui/json_schema.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ def json_schema_array_to_fields(
210210
items_schema = schema.get('items')
211211
if items_schema:
212212
items_schema, required = deference_json_schema(items_schema, defs, required)
213-
for field_name in 'search_url', 'placeholder':
213+
for field_name in 'search_url', 'placeholder', 'description':
214214
if value := schema.get(field_name):
215215
items_schema[field_name] = value # type: ignore
216216
if field := special_string_field(items_schema, loc_to_name(loc), title, required, True):

src/python-fastui/tests/test_forms.py

+28-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from contextlib import asynccontextmanager
22
from io import BytesIO
3-
from typing import List, Tuple, Union
3+
from typing import List, Literal, Tuple, Union
44

55
import pytest
66
from fastapi import HTTPException
77
from fastui import components
88
from fastui.forms import FormFile, Textarea, fastui_form
9-
from pydantic import BaseModel
9+
from pydantic import BaseModel, Field
1010
from starlette.datastructures import FormData, Headers, UploadFile
1111
from typing_extensions import Annotated
1212

@@ -469,3 +469,29 @@ def test_form_textarea_form_fields():
469469
}
470470
],
471471
}
472+
473+
474+
class FormSelectMultiple(BaseModel):
475+
values: List[Literal['foo', 'bar']] = Field(title='Select Multiple', description='First Selector')
476+
477+
478+
def test_form_select_multiple():
479+
m = components.ModelForm(model=FormSelectMultiple, submit_url='/foobar/')
480+
481+
assert m.model_dump(by_alias=True, exclude_none=True) == {
482+
'formFields': [
483+
{
484+
'description': 'First Selector',
485+
'locked': False,
486+
'multiple': True,
487+
'name': 'values',
488+
'options': [{'label': 'Foo', 'value': 'foo'}, {'label': 'Bar', 'value': 'bar'}],
489+
'required': True,
490+
'title': ['Select Multiple'],
491+
'type': 'FormFieldSelect',
492+
}
493+
],
494+
'method': 'POST',
495+
'submitUrl': '/foobar/',
496+
'type': 'ModelForm',
497+
}

0 commit comments

Comments
 (0)