added custom autocomplete for category in product admin, still not working correctly

This commit is contained in:
Sam
2021-03-04 13:23:11 +00:00
parent 657b717c07
commit 085c6f86a7
4 changed files with 18 additions and 19 deletions

View File

@@ -5,17 +5,17 @@ from . import forms
# Register your models here. # Register your models here.
class CagtegoryAdmin(admin.ModelAdmin): class ProductAdmin(admin.ModelAdmin):
form = forms.CategoryTagForm form = forms.ProductTagForm
'''
class ProductInline(admin.TabularInline):
model = models.Product
form = forms.ProductTagForm
'''
class CategoryInline(admin.TabularInline): admin.site.register(models.Product, ProductAdmin)
model = models.CategoryTag
form = forms.CategoryTagForm
admin.site.register(models.Product)
admin.site.register(models.TreeTag) admin.site.register(models.TreeTag)
admin.site.register(models.CategoryTag, CagtegoryAdmin) admin.site.register(models.CategoryTag)
admin.site.register(models.AttributeTag) admin.site.register(models.AttributeTag)

View File

@@ -2,13 +2,13 @@ from dal import autocomplete
from django import forms from django import forms
from .models import CategoryTag from .models import CategoryTag, Product
class CategoryTagForm(forms.ModelForm): class ProductTagForm(forms.ModelForm):
class Meta: class Meta:
model = CategoryTag model = Product
fields = ('__all__') fields = ('__all__')
widgets = { widgets = {
'category': autocomplete.ModelSelect2(url='cagtegory-autocomplete') 'category': autocomplete.ListSelect2(url='category-autocomplete')
} }

View File

@@ -60,9 +60,9 @@ class Product(models.Model):
update_date = models.DateTimeField('Fecha de actualización de producto', null=True, blank=True) update_date = models.DateTimeField('Fecha de actualización de producto', null=True, blank=True)
discount = models.DecimalField('Descuento', max_digits=5, decimal_places=2, null=True, blank=True) discount = models.DecimalField('Descuento', max_digits=5, decimal_places=2, null=True, blank=True)
stock = models.PositiveIntegerField('Stock', null=True, blank=True) stock = models.PositiveIntegerField('Stock', null=True, blank=True)
tags = TagField(to=TreeTag) tags = TagField(to=TreeTag, blank=True)
category = SingleTagField(to=CategoryTag, null=True, blank=True, on_delete=models.SET_NULL) # main tag category category = SingleTagField(to=CategoryTag, null=True, blank=True, on_delete=models.SET_NULL) # main tag category
attributes = TagField(to=AttributeTag, related_name='product_attributes') attributes = TagField(to=AttributeTag, blank=True, related_name='product_attributes')
identifiers = models.TextField('Identificador único de producto', null=True, blank=True) identifiers = models.TextField('Identificador único de producto', null=True, blank=True)
# internal # internal

View File

@@ -223,12 +223,11 @@ class CategoryTagAutocomplete(autocomplete.Select2QuerySetView):
Tag = Product.category.tag_model Tag = Product.category.tag_model
# Return nothing if not auth # Return nothing if not auth
if not self.request.is_authenticated(): if self.request.user.is_anonymous:
return Tag.objects.none() return Tag.objects.none()
qs = Tag.objects.all() qs = Tag.objects.all()
if self.q: if self.q:
qs = qs.filter(name__istartswith=self.q) qs = qs.filter(name__icontains=self.q)
return self.q return qs # [x.label for x in qs]