2017-03-08 4 views
0

Hallo Django Pros da draußen!get_absolute_url mit mehreren Fremdschlüssel

Ist es möglich, den pk eines Modells zu erhalten, das nicht der direkte Fremdschlüssel des Modells ist? Aber der Fremdschlüssel des Fremdschlüsselmodells?

Meine Models:

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) 

und ich möchte die get_absolute_url der AbsoluteValue Klasse definieren. Es sollte auf die Patienten-Detailseite umgeleitet werden. Aus diesem Grund benötigt es die PK der Patientenklasse.

Mein Versuch:

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

Der Fehler sagt, dass es keine URL zu umleiten ist. Also funktioniert meine Abfrage nicht, oder ich sollte in dieser Funktion nicht abfragen.

Antwort

0

Es sieht so aus, als ob Sie self.examination.patient_id anstelle von self.examination__patient_id möchten. Die doppelte Unterstrichnotation wird von dem Django-ORM verwendet, z. in filter(). Verwenden Sie für den regulären Attributzugriff in Python einen Punkt.

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

Vielen Dank! Funktioniert! Würdest du mir bei einer anderen URL-Frage helfen? – Boerne

+0

Bitte stellen Sie eine neue Frage, wenn Sie ein separates Problem haben. – Alasdair

Verwandte Themen