How to get the foreign key value into href attribute of a hyperlink element as a url parameter in Django template
I have data table showing list of vehicles from the Vehicle model with Driver column. When user clicking on the Driver column value, I want to redirect the user to driver detail page url driver-detail/license_number.
I tried to pass the license_number to href attribute of hyperlink element like href="{% url 'driver-detail' vehicle.driver.license_number %}". This does not help me, it's always empty. If I omit the license_number in the href value it will pass the __str__(self) return value of the Driver model, which is combination of license_number and fullname. If I change the return value of __str__(self) in the Driver model it will work. But I don't want to change the return value of __str__(self).
Any help is much appreciated!
Model.py
class Driver(models.Model):
license_number = models.CharField(primary_key=True, max_length=50)
fullname = models.CharField(max_length=25)
license_issue_date = models.DateField("Issued Date")
def __str__(self):
return self.license_number + " " + self.fullname
class **Vehicle**(models.Model):
license_plate = models.CharField(max_length=25, primary_key=True)
model = models.CharField(max_length=100, verbose_name="Vehicle model")
driver = models.ForeignKey(Driver,on_delete=models.SET_NULL,null=True, blank=True)
template.html
<a href="{% url 'driver-detail' vehicle.driver.license_number %}" >
{{vehicle.driver.license_number}}{{vehicle.driver.fullname}}
</a>
urls.py
urlpatterns = [
path('driver-detail/<str:pk>/', views.driverDetail, name='driver-detail'),
]
I guess it's because your model name conflict with field name. Driver with driver . So try renaming Driver like Vehicle_Driver or something like that. Or rename the field name to vehicle_driver or something like that. . Then try vehicle.field_name.license_number.