edit parent_category in admin

This commit is contained in:
Diego Calvo
2022-01-28 15:23:40 +01:00
parent 8a9543398d
commit 71d5834abe
3 changed files with 34 additions and 3 deletions

View File

@@ -1,4 +1,5 @@
from django.contrib import admin
from tagulous.admin import TagModelAdmin
from django_admin_listfilter_dropdown.filters import DropdownFilter, RelatedDropdownFilter, ChoiceDropdownFilter
@@ -23,8 +24,13 @@ class ProductAdmin(admin.ModelAdmin):
search_fields = ('name', 'sku', 'description')
class CategoryTagAdmin(TagModelAdmin):
form = forms.CategoryTagForm
list_display = ('label', 'name')
search_fields = ('label', 'name', 'slug')
admin.site.register(models.Product, ProductAdmin)
admin.site.register(models.TreeTag)
admin.site.register(models.CategoryTag)
admin.site.register(models.CategoryTag, CategoryTagAdmin)
admin.site.register(models.AttributeTag)

View File

@@ -1,3 +1,4 @@
from email.policy import default
from dal import autocomplete
from django import forms
@@ -10,5 +11,29 @@ class ProductTagForm(forms.ModelForm):
model = Product
fields = ('__all__')
widgets = {
'category': autocomplete.TagSelect2(url='category-autocomplete')
'category': autocomplete.TagSelect2(url='category-tag-autocomplete')
}
class CategoryTagForm(forms.ModelForm):
name = forms.CharField(required=False, disabled=True)
parent_category = autocomplete.Select2ListCreateChoiceField(required=False, widget=autocomplete.Select2(url='category-tag-autocomplete', attrs={"data-tags": "true"}))
class Meta:
model = CategoryTag
fields = ('name', 'label', 'slug', 'parent_category')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance.id:
project_name_field = self.fields['parent_category']
parent_category = self.instance.parent
project_name_field.initial = parent_category
project_name_field.choices = [(parent_category, parent_category)]
def save(self, commit=True):
parent_name = self.cleaned_data.get('parent_category', None)
prefix = ''
if parent_name:
prefix = parent_name + '/'
self.instance.name = prefix + self.instance.label
return super(CategoryTagForm, self).save(commit=commit)