Skip to content

Commit

Permalink
Add support for OneToOneField
Browse files Browse the repository at this point in the history
  • Loading branch information
bhch committed Oct 13, 2021
1 parent 65824d4 commit 04eedab
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
2 changes: 1 addition & 1 deletion tornadmin/backends/tortoise/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ async def get_list(self, request_handler, page_num):
field = header[0]
if '__' in field:
field = field.split('__')[0]
if field in self.model._meta.fk_fields:
if field in [*self.model._meta.fk_fields, *self.model._meta.o2o_fields]:
related_fields.append(field)

if related_fields:
Expand Down
9 changes: 5 additions & 4 deletions tornadmin/backends/tortoise/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
class ModelForm(BaseModelForm):
async def set_field_choices(self, request_handler):
"""Sets choices foreignkey and manytomany fields"""
for field_name in self.Meta.model._meta.fk_fields:
for field_name in self.Meta.model._meta.fk_fields | self.Meta.model._meta.o2o_fields:
form_field = getattr(self, '%s_id' % field_name)
choices = await self._get_field_choices(request_handler, field_name)
form_field.choices = choices
Expand Down Expand Up @@ -59,7 +59,7 @@ def modelform_factory(admin, model):
fields = {}
fk_id_fields = []

for field_name in model._meta.fk_fields:
for field_name in model._meta.fk_fields | model._meta.o2o_fields:
fk_id_fields.append('%s_id' % field_name)

for field_name, model_field in model._meta.fields_map.items():
Expand Down Expand Up @@ -98,10 +98,11 @@ def modelform_factory(admin, model):

is_fk = field_name in model._meta.fk_fields
is_m2m = field_name in model._meta.m2m_fields
is_o2o = field_name in model._meta.o2o_fields

form_field = tortoise_to_wtf(model_field, is_fk=is_fk)
form_field = tortoise_to_wtf(model_field, is_fk=is_fk or is_o2o)

if is_fk:
if is_fk or is_o2o:
# For foreignkeys, we'll render a select input
# with the "_id" appended to the name
field_name = '%s_id' % field_name
Expand Down

0 comments on commit 04eedab

Please sign in to comment.