3👍
✅
Just inherit SelectMultiple
widget and override: 1)render_option
to render all selected; 2) render_options
control where we have render all selected and where as default.
class CustomSelectMultiple(SelectMultiple):
def render_options(self, choices, selected_choices):
if not selected_choices:
# there is CreatView and we have no selected choices - render all selected
render_option = self.render_option
else:
# there is UpdateView and we have selected choices - render as default
render_option = super(CustomSelectMultiple, self).render_option
selected_choices = set(force_text(v) for v in selected_choices)
output = []
for option_value, option_label in chain(self.choices, choices):
if isinstance(option_label, (list, tuple)):
output.append(format_html('<optgroup label="{0}">', force_text(option_value)))
for option in option_label:
output.append(render_option(selected_choices, *option))
output.append('</optgroup>')
else:
output.append(render_option(selected_choices, option_value, option_label))
return '\n'.join(output)
def render_option(self, selected_choices, option_value, option_label):
option_value = force_text(option_value)
selected_html = mark_safe(' selected="selected"')
return format_html('<option value="{0}"{1}>{2}</option>',
option_value,
selected_html,
force_text(option_label))
Then set widget to your field in form:
class SomeEntityModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(SomeEntityModelForm, self).__init__(*args, **kwargs)
self.base_fields['anotherEntity'].widget = CustomSelectMultiple()
class Meta:
model = SomeEntity
0👍
you can override
save methos of model like this:
class SomeEntity(models.Model):
anotherEntity = models.ManyToManyField(AnotherEntity)
def save(self, *args, **kwargs):
choices = AnotherEntity.objects.all()
for choice in choices:
self.anotherentity.add(choice)
super(SomeEntity, self).save(*args, **kwargs)
- [Django]-Troubles with running django app via wsgi on ubuntu 17
- [Django]-Using session key of Django session as foreign key
- [Django]-Django & Nginx deeplinking domains (re-write rules or django urls?)
- [Django]-Django, retrieve image using url and save it ThumbnailerImageField of easy_thumbnails
- [Django]-Django/Graphene mutations doesn't apply
Source:stackexchange.com