如何将外键值作为 Django 模板中的 url 参数获取到超链接元素的 href 属性中

问题描述 投票:0回答:1

我有数据表,显示带有驾驶员列的车辆模型中的车辆列表。当用户单击驱动程序列值时,我想将用户重定向到驱动程序详细信息页面网址

driver-detail/license_number
。 我尝试将 license_number 传递给超链接元素(如
href
)的
href="{% url 'driver-detail' vehicle.driver.license_number %}"
属性。这对我没有帮助,它总是空的。如果我省略
license_number
值中的
href
,它将传递驱动程序模型的
__str__(self)
返回值,该值是
license_number
fullname
的组合。如果我更改驱动程序模型中
__str__(self)
的返回值,它将起作用。但我不想改变
__str__(self)
的返回值。 非常感谢任何帮助!

模型.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)    

模板.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'),
]
django django-models django-views django-templates
1个回答
0
投票

我猜这是因为你的模型名称与字段名称冲突。

Driver
driver
。因此,请尝试将驱动程序重命名为
Vehicle_Driver
或类似的名称。或者将字段名称重命名为
vehicle_driver
或类似的名称。 。那就试试
vehicle.field_name.license_number

© www.soinside.com 2019 - 2024. All rights reserved.