我需要链接到 supplier_data 以获取已登录的供应商。无法用任何方法得到它。我得到空元素。 型号:
class Supplier(models.Model):
id = models.IntegerField(primary_key=True)
company_name = models.OneToOneField(User, max_length=120, on_delete=models.CASCADE)
currency = models.CharField('Currency', max_length=4)
legal_form = models.CharField('Legal form', max_length=100, choices=legal_form_options, default='Sole proprietorship')
accounting_standards = models.CharField('Accounting standards', max_length=100)
owner_structure = models.CharField('Owner structure', max_length=100)
industry_sector = models.CharField('Industry sector', max_length=100, choices=industry_sector_options, default='Advertising')
date_of_establishment = models.DateField('Date of establishment', default=date.today)
start_up = models.CharField('Start-up', choices=start_up_options, default='No', max_length=4)
email_address = models.EmailField('Email address')
web = models.URLField('Website address')
def get_absolute_url(self):
return reverse('supplier_data', args=[self.id])
景色:
def all_suppliers(request):
supplier_list = Supplier.objects.all()
return render(request, 'all_suppliers.html',{'supplier_list': supplier_list})
def supplier_data(request, id):
supplier_list = get_object_or_404(Supplier, pk=id)
return render(request, 'all_suppliers.html',{'supplier_list': supplier_list})
网址:
path('supplier_data/<int:id>', views.supplier_data, name="supplier_data"),
HTML:
{% for supplier in supplier_list %}
<a id=link href="{% url 'supplier_data' supplier.id %}">Supplier data</a>
{%endfor%}
我花了大约一周的时间尝试使用 get_absolute_url 方法,但没有使用它……很多事情…… 感谢您看一看。
检查标签 {% endfor %} 中的空格并删除 id,因为它必须是唯一的,并且是像 id="link1" 这样的字符串,但在这里没有意义:
{% for supplier in supplier_list %}
<a href="{% url 'supplier_data' supplier.id %}">Supplier data</a>
{% endfor %}
并确保 supplier_list 不为空(数据库中尚未创建对象),例如将其放在循环之前进行调试,如:
xxx{{supplier_list}}xxx
{% for .... %}
xxx 只是为了使空字符串可见。
如果您出于某种原因需要一个唯一的 id,您可以使用 forloop 计数器创建它:
id = "link{{forloop.counter}}"
{{template_variable}} 中没有空格!