/
forms.py
36 lines (29 loc) · 1.05 KB
/
forms.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.contrib.admin.widgets import FilteredSelectMultiple
from .models import Item, Category
class ItemAdminForm(forms.ModelForm):
categories = forms.ModelMultipleChoiceField(
queryset=Category.objects.all(),
required=False,
widget=FilteredSelectMultiple(
verbose_name=_("Categories"),
is_stacked=False
)
)
class Meta:
model = Item
fields = '__all__'
def __init__(self, *args, **kwargs):
super(ItemAdminForm, self).__init__(*args, **kwargs)
if self.instance.id:
self.fields["categories"].initial = self.instance.categories.all()
def save(self, commit=True):
article = super(ItemAdminForm, self).save(commit=False)
if self.cleaned_data["categories"]:
article.save()
article.categories.set(self.cleaned_data["categories"])
if commit:
article.save()
article.save_m2m()
return article