Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django'之后每次更新uu str_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;s模型更新?_Python_Django_Django Rest Framework - Fatal编程技术网

Python 如何在Django'之后每次更新uu str_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;s模型更新?

Python 如何在Django'之后每次更新uu str_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;s模型更新?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我在Django中创建了这个模型,它还保存了日期和slug。但即使我再次进行这些更改,str和slug仍然保持不变,不会根据新数据进行更新。如何解决这个问题 class EntranceExamination(models.Model): course = models.CharField(max_length=100, blank=True, default='') year = models.PositiveIntegerField(choices=year_choices(

我在Django中创建了这个模型,它还保存了日期和slug。但即使我再次进行这些更改,str和slug仍然保持不变,不会根据新数据进行更新。如何解决这个问题

class EntranceExamination(models.Model):
    course = models.CharField(max_length=100, blank=True, default='')
    year = models.PositiveIntegerField(choices=year_choices(),default=current_year(), validators=[MinValueValidator(1984), max_value_current_year])
    month = models.PositiveIntegerField(choices=month_choices(),validators=[MinValueValidator(1), MaxValueValidator(12)])
    day = models.PositiveIntegerField(validators=[MinValueValidator(1), MaxValueValidator(31)])
    start_time = models.TimeField(blank=True)
    end_time = models.TimeField(blank=True)
    slug = models.SlugField(editable=False,max_length=100)

    class Meta:
        ordering = ['month']
    
    def __str__(self):
        return f"{self.course}'s exam on {self.slug}"
    
    def save(self):
        if not self.slug:
            self.slug = f'{self.day}-{self.month}-{self.year}'

        super(EntranceExamination, self).save()

\uuuu str\uuuu
在对象上可以
str(…)
时进行计算,因此当模型上的数据更改时,
\uuuu str\uuu
将返回不同的结果

对于slug,您可以在保存模型时每次更新slug:

class EntranceExamination(models.Model):
    # …
    
    def save(self, *args, **kwargs):
        self.slug = f'{self.day}-{self.month}-{self.year}'
        super().save(*args, **kwargs)
但是,当您通过ORM进行批量更新时,这将不起作用,因为ORM调用通常会绕过
.save(…)
方法和触发器

然而,这不是一个好主意。Slug用于URI,正如W3联盟所说:

当您更改服务器上的URI时,您永远无法完全确定 谁将拥有指向旧URI的链接。他们可能是从 常规网页。他们可能已将您的页面添加到书签中。他们可能 在给朋友的信的空白处潦草地写下了URI

当有人跟随一个链接而链接断开时,他们通常会失败 信任服务器的所有者。他们也感到沮丧- 从情感上和实践上来说,这都是他们实现目标的关键

有足够多的人一直在抱怨我所希望的悬挂链接 损害是显而易见的。我希望它的声誉也很明显 文件消失的服务器的维护人员将受到损害