如果根据一个特定条件(性别)来进行url的路由分发,不使用get_absolute_url函数,只能写两个路由,
如果直接在模型中定义了该方法,那就可以完成路由的分发,再由reverse进行反解析
from django.urls import reverse
class Student(models.Model):
sex_choice = [
('man', '男性'),
('woman', '女性'),
]
name = models.CharField(max_length=128)
sex = models.CharField(max_length=8, choices=sex_choice)
tel = models.PositiveIntegerField()
def __str__(self):
return self.name
def get_absolute_url(self):
from django.urls import reverse
if self.sex == 'man':
return reverse('man', args=(self.id,))
else:
return reverse('woman', args=(self.id,))