jazzband / django-taggit

Simple tagging for django

Home Page:https://django-taggit.readthedocs.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Adding tags list to tag field by post save method

engrimran7 opened this issue · comments

i am trying to automatically add tags list to the tag field by post save method to copy all the fileld's to tags field.

i tried below which shows success without any exception but the issue is all the fields are added to tags table in admin but not associating the tags to that specific resource tag field.

[class resource(models.Model):
title=models.CharField(max_length=100)
size=models.CharField( max_length=20, default="")
desc=models.TextField(default="")
file=models.FileField(default="", blank=True)
url= models.URLField(max_length=200, blank=True)
Brand = models.ForeignKey(brand,on_delete=models.CASCADE, default="")
Model = models.ForeignKey(model,on_delete=models.CASCADE, default="")
Categories = models.ForeignKey(category,on_delete=models.CASCADE, default="")
update_at=models.DateField(auto_now=True)
slug=models.SlugField(default="")
Tags = TaggableManager()

def save(self, *args, **kwargs):
    if not self.id:
        # Newly created object, so set slug
        self.slug = slugify(self.title)
    super(resource, self).save(*args, **kwargs)

def Tag(self):
    return ",".join([str(p) for p in self.Tags.all()] )
def _str_(self):
 return self.title

def tag_set(sender, instance,*arg, **kwargs):
ans= array_tag(instance)
# print(ans)
mylist = ["firmware", "download", "gsm"]
instance.title='check'
instance.Tags.add(*ans)

post_save.connect(tag_set, sender=resource)
def array_tag(instance):
return [instance.title ,instance.desc,instance.size, instance.Brand.title ,instance.Model.title ,instance.Categories.title]
](url)

i also gave it a try by changing code as below which through below error.

changed this
def tag_set(sender, instance,*arg, **kwargs): ans= array_tag(instance) # print(ans) mylist = ["firmware", "download", "gsm"] instance.title='check' instance.Tags.add(*ans)

to this
def tag_set(sender, instance,*arg, **kwargs): ans= array_tag(instance) # print(ans) mylist = ["firmware", "download", "gsm"] instance.title='check' instance.Tags.add(ans)

and got below error

Cannot add ['tags_check', 'check file', '6G', 'oppo', 'oppoA37', 'china'] (<class 'list'>). Expected <class 'django.db.models.base.ModelBase'> or str.

any help by experts is highly appreciated

This seems to be a duplicated of #818