Python 如何在Django'之后每次更新uu str_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu;s模型更新?
我在Django中创建了这个模型,它还保存了日期和slug。但即使我再次进行这些更改,str和slug仍然保持不变,不会根据新数据进行更新。如何解决这个问题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(
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
当有人跟随一个链接而链接断开时,他们通常会失败
信任服务器的所有者。他们也感到沮丧-
从情感上和实践上来说,这都是他们实现目标的关键
有足够多的人一直在抱怨我所希望的悬挂链接
损害是显而易见的。我希望它的声誉也很明显
文件消失的服务器的维护人员将受到损害