In Django, the unique_for_date
, unique_for_month
, and unique_for_year
options for a SlugField
are used to enforce uniqueness of the slug field's value within a given date, month, or year respectively. Here's how you can implement a Django model with these options:
pythonfrom django.db import models
class YourModel(models.Model):
# Define other fields of your model here
# Define SlugField with unique_for_date option
slug_date = models.DateField(auto_now_add=True) # Assuming this is your date field
slug = models.SlugField(unique_for_date='slug_date', max_length=100)
# If you want unique_for_month
# slug_month = models.DateField(auto_now_add=True) # Assuming this is your date field
# slug = models.SlugField(unique_for_month='slug_month', max_length=100)
# If you want unique_for_year
# slug_year = models.DateField(auto_now_add=True) # Assuming this is your date field
# slug = models.SlugField(unique_for_year='slug_year', max_length=100)
def __str__(self):
return self.slug
In this example:
YourModel
inheriting from models.Model
.DateField
named slug_date
, slug_month
, or slug_year
in the model representing the date when the record is created.SlugField
named slug
with one of the unique_for_date
, unique_for_month
, or unique_for_year
options set to the corresponding date field (slug_date
, slug_month
, or slug_year
).unique_for_date
, unique_for_month
, or unique_for_year
option ensures that the slug is unique within the specified date, month, or year respectively.__str__
method returns a string representation of the model instance, which in this case is the slug.With this setup, Django will enforce uniqueness of the slug field's value within the specified date, month, or year, depending on the option you choose. If you attempt to create or update a model instance with a non-unique slug value within the specified timeframe, Django will raise a django.db.utils.IntegrityError
.