67👍
Just add unique=True
in the field, so:
serial_number = models.CharField(max_length=64, unique=True)
Refer docs for more information.
6👍
The key word unique=True
makes the title CharField
unique.
class Book(models.Model):
title= models.CharField(max_length=300, unique=True)
def __str__(self):
return self.title
- [Django]-Expire a view-cache in Django?
- [Django]-Accessing "Media" files in Django
- [Django]-How to copy InMemoryUploadedFile object to disk
6👍
As mentioned by the other stackoverflowers above, you can use unique=True
. but mind you that this won’t work if you want to set a joined unique constraint. For example, if you want a combination of fields to be unique, then you should use models.UniqueConstraint
as seen below
class Book(models.Model):
title = models.CharField(max_length=300)
sub_title = models.CharField(max_length=300)
class Meta:
constraints = [
models.UniqueConstraint(fields=['title', 'sub_title'], name="%(app_label)s_%(class)s_unique")
]
def __str__(self):
return self.title
- [Django]-Django self-referential foreign key
- [Django]-Dynamic choices field in Django Models
- [Django]-405 POST method not allowed
1👍
If you are looking for a unique case insensitive, then do this.
example "my NamE is John" and "MY naME is jOHN" should match and will not work to have 2,
because if you write "my NamE is John" it will become "My name is john".
and "MY naME is jOHN" will also become "My name is john".
models.py
1. add this code to the top.
capitalizeFirstChar = lambda s: s[:1].upper() + s[1:]
2. Then here is an example how to use it.
class MyModel(models.Model):
name = models.CharField(max_length=255, unique=True)
def __str__(self):
return self.name
# The save method to convert your text "MY naME is jOHN" to "My name is john"
def save(self, force_insert=False, force_update=False):
self.name = self.name.lower()
self.name = capitalizeFirstChar(self.name)
# If the name already exists
if not Category.objects.filter(name__iexact=self.name).exists():
super(Category, self).save(force_insert, force_update)
This solution sucks if you don’t want the characters to change in capitalisation.
- [Django]-How to stream an HttpResponse with Django
- [Django]-Check for presence in a list django template
- [Django]-Login with code when using LiveServerTestCase with Django