Я пытаюсь создать уникальный слаг в Django, чтобы я мог получить доступ к сообщению через URL-адрес:
http://www.example.com/buy-a-new-bike_Boston-MA-02111_2
Соответствующие модели:
class ZipCode(models.Model):
zipcode = models.CharField(max_length=5)
city = models.CharField(max_length=64)
statecode = models.CharField(max_length=32)
class Need(models.Model):
title = models.CharField(max_length=50)
us_zip = models.CharField(max_length=5)
slug = ?????
def get_city():
zip = ZipCode.objects.get(zipcode=self.us_zip)
city = "%s, %s %s" % (zip.city, zip.statecode, zip.zipcode)
return city
Пример записи ZipCode:
- zipcode = "02111"
- city = "Бостон"
- statecode = "MA"
Образец Нужна запись:
- title = "купить новый велосипед"
- us_zip = "02111"
- slug = "buy-a-new-bike_Boston-MA-02111_2" (желательно)
Какие-нибудь советы, как создать этот уникальный слаг? Его состав:
- Need.title + "_" + Need.get_city () + "_" + необязательное увеличивающееся целое число, чтобы сделать его уникальным. Все пробелы следует заменить на «-».
ПРИМЕЧАНИЕ. Мой желаемый слаг предполагает, что слаг «buy-a-new-bike_Boston-MA-02111» уже существует, к нему добавлен «_2», чтобы сделать его уникальным.
Я пробовал django-расширения, но кажется, что для создания уникального слага может потребоваться только поле или набор полей. Мне нужно передать функцию get_city (), а также соединитель "_" между названием и городом. Кто-нибудь решил это и готов поделиться?
Спасибо!
UPDATE
Я уже использую расширения django для его UUIDField, поэтому было бы неплохо, если бы его можно было использовать для AutoSlugField!