Похоже, что моя функция presave slugify перестала работать на localhost, но не на развернутой версии? Случалось ли это с кем-нибудь еще?

Я работаю над сайтом по усыновлению собак, который я создал на своем локальном хосте на python с использованием фреймворка Django. У меня есть страница python, которая использует функцию pre-save для создания уникального slug для собаки, когда она создается. Сейчас я развернул свой сайт, и он работает абсолютно нормально. Однако с сегодняшнего дня эта функция, похоже, перестала работать на моем локальном хосте. Я не могу найти причину этого, и он использует тот же код, что и развернутая версия системы. Кто-нибудь сталкивался с подобным, и если да, то есть ли у кого-нибудь решение, поскольку я хотел бы продолжать работать и поддерживать сайт на моем локальном хосте.

class Dogs(models.Model):
    dog_id = models.AutoField(primary_key=True)
    dog_name = models.CharField(max_length=100)
    dog_slug = models.SlugField(unique=True, null=True, blank=True)
    breed = models.ForeignKey(Dog_breed, on_delete=models.CASCADE)
    dogs_image = models.ImageField(upload_to='media/')
    description = models.TextField(default="Description information to be added soon")
    dog_illness_disability = models.BooleanField(null=True, blank=True)
    can_live_with_cats = models.BooleanField(null=True, blank=True)
    can_live_with_dogs = models.BooleanField(null=True, blank=True)
    can_be_with_children = models.BooleanField(null=True, blank=True)
    hours_excercise_required = models.IntegerField(default=0)
    dog_sociability = models.IntegerField(default=0)
    can_be_left_alone = models.IntegerField(default=0)
    weight_kg = models.FloatField(default=0)
    size_range = models.IntegerField(default=0)
    affection_level = models.IntegerField(default=0)
    training_level = models.IntegerField(default=0)
    energy_level = models.IntegerField(default=0)
    age = models.IntegerField(default=0)
    age_range = models.IntegerField(default=0)
    male_female = models.BooleanField(null=True, blank=True)
    neutered = models.BooleanField(null=True, blank=True)

slugify.py:

def unique_slug(instance, generated_slug = None):
    if generated_slug is not None: 
        slug = generated_slug
    else:
        slug = slugify(instance.dog_name)   
    #check if a dog with that slug already exists. If so generate a random string of numbers and characters to create a unique slug
    qs = Dogs.objects.filter(dog_slug=slug).exclude(dog_id=instance.dog_id)
    if qs.exists():
        random_str = get_random_string(length=4)
        random_num = random.randint(100_00, 500_000)
        slug = f"{slug}-{random_num}-{random_str}"
        return unique_slug(instance, generated_slug=slug)
    return slug
   
def pre_save_receiver(sender, instance, *args, **kwargs): 
   if not instance.dog_slug: 
       instance.dog_slug = unique_slug(instance) 

pre_save.connect(pre_save_receiver, sender = Dogs) 

попробуйте вот это:

from django.utils.text import slugify

def unique_slug(self, *args, **kwargs):
    self.slug = slugify(self.dog_name)
    super(Dogs, self).save(*args, **kwargs)

Вы должны знать, как генерировать случайное число для каждой создаваемой собаки, поскольку вы спрашиваете о slugify, вы можете использовать тот, который я дал вам выше.

Вернуться на верх