title: Django-taggit: validate what a user inputs
body: <p><strong>django-taggit==1.2.0</strong></p>
  <p><strong>Django==3.0.8</strong></p>
  <pre><code>class TagMixin(models.Model):
      tags = TaggableManager(verbose_name=&quot;Tags&quot;) # django-taggit
  
      class Meta:
          abstract = True
  
  
  class Post(TagMixin,
             models.Model):
  
      category = models.ForeignKey(Category,
                                   on_delete=models.PROTECT,
                                   verbose_name=&quot;Category&quot;)
      def is_featured(self):
          return SPECIAL_TAGS.FEATURED.value in self.tags.names()
  
      def is_news(self):
          return self.category.slug == SPECIAL_CATEGORIES.NEWS.value
  
      def _validate_featured(self):
              if not self.is_news() and self.is_featured():
                  raise ValidationError(&quot;Featured can be in News only.&quot;)
  </code></pre>
  <p><strong>Problem</strong></p>
  <p>In the admin site there is Tags field visible. But really it is not a field. It is a manager.</p>
  <p>Therefore my validator doesn't work properly: it doesn't validate tags the field in the admin site.</p>
  <p>What <code>is_featured()</code> does is extracting tag names from the database.</p>
  <p>How can I validate what tags are input by a user? The validation requires access to more than a just tags (as you can see, it implies interdependency between tags and categories).</p>