0

I am creating models in django and then entering data in admin panel

class Song(models.Model):
  name = models.CharField(max_length=30,validators=[alphanumeric]).title()
  slug=models.SlugField(default="",blank=True,null=False,db_index=True)
  artist = models.CharField(max_length=30,validators=[alphanumeric])
  genre = models.CharField(max_length=30,validators=[alphanumeric])
  language = models.CharField(max_length=30,validators=[alphanumeric])
  image = models.ImageField(null=True,blank=True)

But the issue is when I am entering "AceHunter" or "acehunter" as artist it is treating as different artists although I want them as one....

Please can someone help me what error I am making?

1 Answers1

0

You can use PostgreSQL CIText which is case-insensitive text field or validate like this:

from django.core.exceptions import ValidationError
class Song(models.Model):
  name = models.CharField(max_length=30,validators=[alphanumeric]).title()
  slug=models.SlugField(default="",blank=True,null=False,db_index=True)
  artist = models.CharField(max_length=30,validators=[alphanumeric])
  genre = models.CharField(max_length=30,validators=[alphanumeric])
  language = models.CharField(max_length=30,validators=[alphanumeric])
  image = models.ImageField(null=True,blank=True)
  def validate(self):
      if Song.objects.filter(artist__iexact=self.artist).exists():
          raise ValidationError('This artist already exists.')

Also, check this form

Mukhtor Rasulov
  • 587
  • 3
  • 10