Я изменил на python 3.5.2. Я использую django_tables2 и сталкиваюсь с проблемой Failed lookup for key [wholesale_product] in {'wholesale_product__code': '11500356', 'quantity': Decimal('1.00'), 'wholesale_product__description': 'ΜΕΤΡΟΤΑΙΝΙΑ IRWIN 5M SHORT', 'wholesale_product__id': 76970}, when resolving the accessor wholesale_product__id
Проблема связана с полем оптового продукта, которое является FK для моей модели Warehouse_Order_Backorder.
моя модель
class Warehouse_Order_Backorder(models.Model):
woo_order = models.ForeignKey(Woo_Orders,verbose_name="Παραγγελία Χοντρικής",null=True,on_delete=models.CASCADE)
wholesale_product=models.ForeignKey(Product,null=True,on_delete=models.CASCADE)
warehouse=models.ForeignKey(Warehouse,verbose_name=u'Αποθήκη',blank=True, null=True,on_delete=models.CASCADE)
quantity = models.DecimalField("Ποσότητα", max_digits=7, decimal_places=2, default=0)
date = models.DateTimeField("Ημ/νία",null=True, blank=True, default=datetime.datetime.now)
def __str__(self):
return self.woo_order.oid+" "+self.wholesale_product.description
мой стол
class BackOrderTable(tables.Table):
#description
wholesale_product_name = tables.Column(accessor='wholesale_product__description',verbose_name= 'Προϊόν που έχει backorder')
#sku
wholesale_product_code = tables.Column(accessor='wholesale_product__code',verbose_name= 'Sku Προϊόντος')
#product_id
wholesale_product_id = tables.Column(accessor='wholesale_product__id',verbose_name= 'ID Προϊόντος')
#details button
details=tables.LinkColumn('backorder_details_list',args=[A('wholesale_product__id')],accessor='Backorder Details',orderable=False,empty_values=(),verbose_name = 'Λεπτομέρειες backorder')
class Meta:
#define the model
model = Warehouse_Order_Backorder
template_name = 'django_tables2/bootstrap4.html'
exclude = ('id','date',"warehouse","woo_order",'wholesale_product')
sequence = ('wholesale_product_name','wholesale_product_code', 'wholesale_product_id',"quantity",'details')
def render_wholesale_product_id(self,record):
return '%s' % (record.wholesale_product.id)
def render_wholesale_product_name(self,record):
return '%s' % (record.wholesale_product.description)
def render_wholesale_product_code(self,record):
return '%s' % (record.wholesale_product.code)
def render_details(self,record):
return format_html('<a href="/backorder_details/{}/"><button class="btn btn-primary btn-sm" type="">Details</button></a>',record['wholesale_product__id'])
вот мой Traceback
Environment:
Request Method: GET
Request URL: http://backorders/
Django Version: 2.2.6
Python Version: 3.5.2
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'intranet',
'crispy_forms',
'fm',
'dal',
'dal_select2',
'django_crontab',
'django_tables2',
'django_filters',
'widget_tweaks',
'django_smtp_ssl',
'mathfilters',
'bootstrap4',
'bootstrap3',
'django.contrib.humanize']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template /usr/local/lib/python3.5/dist-packages/django_tables2/templates/django_tables2/bootstrap4.html, error at line 29
Failed lookup for key [wholesale_product] in {'wholesale_product__code': '11500356', 'quantity': Decimal('1.00'), 'wholesale_product__description': 'ΜΕΤΡΟΤΑΙΝΙΑ IRWIN 5M SHORT', 'wholesale_product__id': 76970}, when resolving the accessor wholesale_product__id
19 : {% endfor %}
20 : </tr>
21 : </thead>
22 : {% endif %}
23 : {% endblock table.thead %}
24 : {% block table.tbody %}
25 : <tbody {{ table.attrs.tbody.as_html }}>
26 : {% for row in table.paginated_rows %}
27 : {% block table.tbody.row %}
28 : <tr {{ row.attrs.as_html }}>
29 : {% for column, cell in row.items %}
30 : <td {{ column.attrs.td.as_html }}>{% if column.localize == None %}{{ cell }}{% else %}{% if column.localize %}{{ cell|localize }}{% else %}{{ cell|unlocalize }}{% endif %}{% endif %}</td>
31 : {% endfor %}
32 : </tr>
33 : {% endblock table.tbody.row %}
34 : {% empty %}
35 : {% if table.empty_text %}
36 : {% block table.tbody.empty_text %}
37 : <tr><td colspan="{{ table.columns|length }}">{{ table.empty_text }}</td></tr>
38 : {% endblock table.tbody.empty_text %}
39 : {% endif %}
Traceback:
File "/usr/local/lib/python3.5/dist-packages/django_tables2/utils.py" in resolve
357. current = current[bit]
During handling of the above exception ('wholesale_product'), another exception occurred:
File "/usr/local/lib/python3.5/dist-packages/django_tables2/utils.py" in resolve
360. current = getattr(current, bit)
During handling of the above exception ('dict' object has no attribute 'wholesale_product'), another exception occurred:
File "/usr/local/lib/python3.5/dist-packages/django_tables2/utils.py" in resolve
363. current = current[int(bit)]
During handling of the above exception (invalid literal for int() with base 10: 'wholesale_product'), another exception occurred:
File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py" in _get_response
145. response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py" in _get_response
143. response = response.render()
File "/usr/local/lib/python3.5/dist-packages/django/template/response.py" in render
106. self.content = self.rendered_content
File "/usr/local/lib/python3.5/dist-packages/django/template/response.py" in rendered_content
83. content = template.render(context, self._request)
File "/usr/local/lib/python3.5/dist-packages/django/template/backends/django.py" in render
61. return self.template.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
171. return self._render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in _render
163. return self.nodelist.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/loader_tags.py" in render
150. return compiled_parent._render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in _render
163. return self.nodelist.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/defaulttags.py" in render
309. return nodelist.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/defaulttags.py" in render
309. return nodelist.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django_tables2/templatetags/django_tables2.py" in render
167. return template.render(context={"table": table}, request=request)
File "/usr/local/lib/python3.5/dist-packages/django/template/backends/django.py" in render
61. return self.template.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
171. return self._render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in _render
163. return self.nodelist.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/loader_tags.py" in render
53. result = self.nodelist.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/loader_tags.py" in render
53. result = self.nodelist.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/loader_tags.py" in render
53. result = self.nodelist.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/loader_tags.py" in render
53. result = self.nodelist.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render
937. bit = node.render_annotated(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/base.py" in render_annotated
904. return self.render(context)
File "/usr/local/lib/python3.5/dist-packages/django/template/defaulttags.py" in render
165. values = list(values)
File "/usr/local/lib/python3.5/dist-packages/django_tables2/rows.py" in items
249. column.current_value = self.get_cell(column.name)
File "/usr/local/lib/python3.5/dist-packages/django_tables2/rows.py" in get_cell
203. bound_column, render_func=self._call_render, default=bound_column.default
File "/usr/local/lib/python3.5/dist-packages/django_tables2/rows.py" in _get_and_render_with
178. return render_func(bound_column, value)
File "/usr/local/lib/python3.5/dist-packages/django_tables2/rows.py" in _call_render
213. return bound_column.link(content, **render_kwargs) if bound_column.link else content
File "/usr/local/lib/python3.5/dist-packages/django_tables2/columns/base.py" in __call__
152. attrs = self.get_attrs(**kwargs)
File "/usr/local/lib/python3.5/dist-packages/django_tables2/columns/base.py" in get_attrs
147. attrs["href"] = self.compose_url(**kwargs)
File "/usr/local/lib/python3.5/dist-packages/django_tables2/columns/base.py" in compose_url
103. return self.call_reverse(record=record)
File "/usr/local/lib/python3.5/dist-packages/django_tables2/columns/base.py" in call_reverse
135. params["args"] = [resolve_if_accessor(a) for a in params["args"]]
File "/usr/local/lib/python3.5/dist-packages/django_tables2/columns/base.py" in <listcomp>
135. params["args"] = [resolve_if_accessor(a) for a in params["args"]]
File "/usr/local/lib/python3.5/dist-packages/django_tables2/columns/base.py" in resolve_if_accessor
127. return val.resolve(record) if isinstance(val, Accessor) else val
File "/usr/local/lib/python3.5/dist-packages/django_tables2/utils.py" in resolve
376. key=bit, context=current_context, accessor=self
Exception Type: ValueError at /backorders/
Exception Value: Failed lookup for key [wholesale_product] in {'wholesale_product__code': '11500356', 'quantity': Decimal('1.00'), 'wholesale_product__description': 'ΜΕΤΡΟΤΑΙΝΙΑ IRWIN 5M SHORT', 'wholesale_product__id': 76970}, when resolving the accessor
Есть идеи, что может вызвать ошибку?