Skip to content

Instantly share code, notes, and snippets.

@marctc
Last active March 13, 2017 15:20
Show Gist options
  • Save marctc/fdce1a490cd5cdada371 to your computer and use it in GitHub Desktop.
Save marctc/fdce1a490cd5cdada371 to your computer and use it in GitHub Desktop.
Display modeltranslation fields as tabs using crispy-forms.
from django import forms
from django.conf import settings
from crispy_forms.bootstrap import Tab, TabHolder
from modeltranslation.fields import TranslationField
class DefaultForm(forms.ModelForm):
def get_fields(self):
fields = self.fields.keys()
for field in self.Meta.model._meta.fields:
if isinstance(field, TranslationField):
original_field = '_'.join(field.name.split("_")[:-1])
if original_field in fields:
fields.remove(original_field)
tabs = []
for lang in settings.LANGUAGES:
translation_field = '{0}_{1}'.format(original_field, lang[0])
tabs.append(Tab(lang[0], translation_field, css_id='tab_{0}'.format(translation_field)))
fields.remove(translation_field)
fields.append(TabHolder(*tuple(tabs)))
return fields
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment