【发布时间】:2020-08-13 16:42:24
【问题描述】:
我正在尝试超链接 的类列的行以用作到其他页面的链接。我阅读了有关超链接的文档以及此处的一些帖子,例如The linkcolumn about django-tables2。但它们并没有解决我的问题,因为据我了解,该链接是通过在每一行中引用 UNIQUE TABLE 的 Pks 来建立的。
在我的情况下,每行的链接使用不同的模型,所以我不知道如何引用 pk。
到目前为止,我可以做到以下几点: 主页表:
class ClassificationTable(tables.Table):
Class = tables.TemplateColumn('<a href="{{record.extra_details_view}}">{{record.Class}}</a>')
revenue_proportion = tables.Column(gettext_lazy("revenue proportion"),localize= True)
Quantity_of_items = tables.Column(gettext_lazy("quantity of items"),localize= True)
class Meta:
model = Classification
fields = ('Class',
'revenue_proportion',
'Quantity_of_items',
)
template_name = "django_tables2/bootstrap4.html"
这是主页的html代码:
{% load static %}
{% load i18n %}
{% load django_tables2 %}
class="no-padding-bottom">
<div class="container-fluid">
<div class="row">
<div class="col-lg-8">
{% render_table table %}
</div>
这是分类的模型:
class Classification(models.Model):
Class = models.CharField(max_length=10, primary_key=True)
revenue_proportion = models.FloatField(default=0)
Quantity_of_items = models.IntegerField(default=0)
def __str__(self):
return self.Class
以下是其他页面中使用的模型:
class class_aa1(models.Model):
Id = models.CharField(max_length=100, primary_key=True, verbose_name= 'items')
revenue_contribution_in_percentage = models.FloatField(default=0, verbose_name= 'value contribution')
margin = models.FloatField(default=0, verbose_name= 'value')
number_of_orders_placed = models.FloatField(default=0, verbose_name= 'number of orders placed')
number_of_sales = models.FloatField(default=0, verbose_name= 'number of sales')
def __str(self):
return self.Id
def extra_details_view(self):
return reverse("exostocksaas.dashboard.classAA1page")
class class_a1(models.Model):
Id = models.CharField(max_length=100, primary_key=True, verbose_name= 'items')
revenue_contribution_in_percentage = models.FloatField(default=0, verbose_name= 'value contribution')
margin = models.FloatField(default=0, verbose_name= 'value')
number_of_orders_placed = models.FloatField(default=0, verbose_name= 'number of orders placed')
number_of_sales = models.FloatField(default=0, verbose_name= 'number of sales')
def __str(self):
return self.Référence
def extra_details_view(self):
return reverse("exostocksaas.dashboard.classA1page")
class class_b1(models.Model):
Id = models.CharField(max_length=100, primary_key=True, verbose_name= 'items')
revenue_contribution_in_percentage = models.FloatField(default=0, verbose_name= 'value contribution')
margin = models.FloatField(default=0, verbose_name= 'value')
number_of_orders_placed = models.FloatField(default=0, verbose_name= 'number of orders placed')
number_of_sales = models.FloatField(default=0, verbose_name= 'number of sales')
def __str(self):
return self.Référence
def extra_details_view(self):
return reverse("exostocksaas.dashboard.classB1page")
class class_c1(models.Model):
Id = models.CharField(max_length=100, primary_key=True, verbose_name= 'items')
revenue_contribution_in_percentage = models.FloatField(default=0, verbose_name= 'value contribution')
margin = models.FloatField(default=0, verbose_name= 'value')
number_of_orders_placed = models.FloatField(default=0, verbose_name= 'number of orders placed')
number_of_sales = models.FloatField(default=0, verbose_name= 'number of sales')
def __str(self):
return self.Référence
def extra_details_view(self):
return reverse("exostocksaas.dashboard.classC1page")
class class_d1(models.Model):
Id = models.CharField(max_length=100, primary_key=True, verbose_name= 'items')
revenue_contribution_in_percentage = models.FloatField(default=0, verbose_name= 'value contribution')
margin = models.FloatField(default=0, verbose_name= 'value')
number_of_orders_placed = models.FloatField(default=0, verbose_name= 'number of orders placed')
number_of_sales = models.FloatField(default=0, verbose_name= 'number of sales')
def __str(self):
return self.Référence
def extra_details_view(self):
return reverse("exostocksaas.dashboard.classD1page")
我希望有人可以帮助我解决这个问题,我在这个问题上纠结太久了。如有必要,我很乐意提供更多信息。干杯
更新:我按照答案中的建议进行了尝试(更新了我的代码),现在类列中的行可以作为链接单击,但它们似乎在调用同一页面,因为没有任何变化。
这是我在日志中得到的:
Traceback (most recent call last):
File "/home/ubuntu/exo/lib/python3.6/site-packages/django/template/base.py", line 849, in _resolve_lookup
(bit, current)) # missing attribute
django.template.base.VariableDoesNotExist: Failed lookup for key [extra_details_view] in <Classification: ClassAA>
DEBUG Exception while resolving variable 'extra_details_view' in template 'dashboard/analytics.html'.
Traceback (most recent call last):
File "/home/ubuntu/exo/lib/python3.6/site-packages/django/template/base.py", line 828, in _resolve_lookup
current = current[bit]
TypeError: 'Classification' object is not subscriptable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ubuntu/exo/lib/python3.6/site-packages/django/template/base.py", line 836, in _resolve_lookup
current = getattr(current, bit)
AttributeError: 'Classification' object has no attribute 'extra_details_view'
我不熟悉引用链接的建议技术,所以我不确定发生了什么,有人有线索吗?
【问题讨论】: