将 ID 传递给 Django URL

时间:2021-01-25 07:52:41

标签: django

美好的一天堆栈溢出;

我想使用 url 根据数据的 ID 从数据库访问数据。我知道 SO 上有相同问题的重复项,但我似乎无法弄清楚如此基本的事情。希望你能帮我解决这个问题。

除了我的模板外,一切正常。

如果我将网址传递为:

<a href="{% url 'job_details' 5 %}">

它会得到 ID 为 5 的 Job。但是如果我使用

<!--- <a href="{% url 'job_details' PropositionItem.id %}"> --->
<!--- 2nd href fixes the details --->
<a href="{% url 'job_details' id=jobItems.id %}">

它会回来

Reverse for 'job_details' with arguments '('',)' not found. 1 pattern(s) tried: ['jobs/details/(?P<id>[0-9]+)$']

作为错误信息。

我的模型是这样的:

class PropositionItem(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    created_by = models.ForeignKey('users.Account', on_delete=models.CASCADE)
    job_title = models.CharField(max_length=100, default='', null=False)

urls.py

path('details/<int:id>', views.job_details, name='job_details'),

views.py

def job_details(request, id, *args, **kwargs):

context = {}
jobObj = PropositionItem.objects.get(id=id)
job_form = PropositionItemForm(
                                initial = {
                                    "job_title" : jobObj.job_title,
                                }
                            )
context['job_form'] = job_form

return render(request, 'jobs/job_form.html', context)

我应该在我的 href 上写什么?

编辑

我的 detailsView 现在随着不同的 ID 发生变化。但是我的 ListView 返回了相同的错误消息。

列表视图

@login_required(login_url='/login/')
def job_list(request, *args, **kwargs):

    context = {}
    jobItems = PropositionItem.objects.all().filter(created_by=request.user)
    context={
      'jobItems': jobItems
    }
    
    return render(request, 'jobs/job_list.html', context)

列表网址

path('', views.job_list, name='job_list'),

1 个答案:

答案 0 :(得分:0)

问题是你没有分配ID值,你可以试试

id=PropositionItem.id