带有多个外键的get_absolute_url

时间:2017-03-08 11:55:56

标签: python django url django-models foreign-keys

你好Django Pros在那里!

是否有可能获得模型的pk,这不是模型的直接外键?但外键模型的外键?

我的模特:

class Patient(models.Model):
    patientID = models.CharField(max_length=200, unique=True, help_text='Insert PatientID')

class Examination(models.Model):
    number_of_examination = models.IntegerField(choices=EXA_Choices)
    patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
    date_of_examination = models.DateField(auto_now=False, auto_now_add=False, help_text='YYYY-MM-DD')

class AbsoluteValue(models.Model):
    examination = models.ForeignKey(Examination, on_delete=models.CASCADE)
    attr1 = models.BooleanField(default=False)
    attr2 = models.BooleanField(default=False)
    attr3 = models.BooleanField(default=False)

我想定义AbsoluteValue类的get_absolute_url。它应该重定向到患者详细信息页面。因此,它需要患者类的PK。

我的尝试:

def get_absolute_url(self):
    return reverse('member:detail', kwargs={'pk': self.examination__patient_id})

错误表示没有要重定向到的网址。所以我的查询不起作用,或者我不应该在这个函数中查询。

1 个答案:

答案 0 :(得分:0)

您似乎想要self.examination.patient_id而不是self.examination__patient_id。 Django ORM使用双下划线表示法,例如:在filter()。对于Python中的常规属性访问,请使用点。

def get_absolute_url(self):
    return reverse('member:detail', kwargs={'pk': self.examination.patient_id})