美好的一天堆栈溢出;
我想使用 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'),
答案 0 :(得分:0)
问题是你没有分配ID值,你可以试试
id=PropositionItem.id