Django 使来自不同表的多个get_absolute_url在一个视图中工作
您好,我正在尝试从不同的表中获取两个get_absolute_url,以在一个基于类的视图中工作,但它似乎只获取第一个 错误消息是: 字段“Product\u id”需要一个号码,但得到了“phones”。 my views.py:Django 使来自不同表的多个get_absolute_url在一个视图中工作,django,django-models,django-views,Django,Django Models,Django Views,您好,我正在尝试从不同的表中获取两个get_absolute_url,以在一个基于类的视图中工作,但它似乎只获取第一个 错误消息是: 字段“Product\u id”需要一个号码,但得到了“phones”。 my views.py: class ProductListView(ListView): model= models.Product context_object_name = 'product_list' template_name = 'store/produc
class ProductListView(ListView):
model= models.Product
context_object_name = 'product_list'
template_name = 'store/product_list.html'
def get_context_data(self, **kwargs):
context=super().get_context_data(**kwargs)
context['cat'] = Category.objects.all()
return context
My urls.py(slug部分不工作):
"
请索取您可能需要的更多代码。谢谢产品和类别模型的
获取绝对url
是什么样子的?url也很奇怪,因为第一条路径将匹配所有其他路径,因此这意味着它将始终触发ProdView
视图,而不是其他的。@WillemVanOnsem我已经更新了it@WillemVanOnsem很抱歉,我以前在url中更改了一些内容,但它似乎也不起作用
from django.urls import path, re_path
from store import views
app_name = 'store'
urlpatterns = [
re_path(r'^(?P<pk>[\w-]+)/$', views.ProdView.as_view(),name='prod'),
path('signup', views.SignUpView.as_view(), name='signup'),
path('<slug>/', views.CategoryList.as_view(), name='cat'),
path('search', views.SearchListView.as_view(), name='search_results'),
path('change_password', views.PassChange.as_view(), name='passchange'),
path('reset_password', views.PassReset.as_view(), name='passreset'),
path('logout', views.user_logout,name='logout'),
path('user_login', views.user_login, name='user_login'),
]
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div class="jumbotron">
<form action="{% url 'store:search_results' %}" method="get">
<input name='q' type='text' placeholder="Search products..">
</form>
{% for cate in cat %}
<h3><li><a href="{{cat.get_absolute_url}}">{{cate.Category_name}}</a></li></h3>
{% endfor %}
<h1>These are the products</h1>
<ol>
{% for product in product_list %}
<h2><li><a href="{{product.get_absolute_url}}">{{product.Product_name}} </a></li></h2>
{% endfor %}
</ol>
{% if user.is_authenticated %}
Hi !
<p><a href="{% url 'store:logout' %}">Log Out</a></p>
<p><a href="{% url 'store:passchange' %}">change password</a></p>
<p><a href="{% url 'store:passreset' %}">reset password</a></p>
{% else %}
<p>You are not logged in</p>
<a href="{% url 'store:user_login' %}">Log In</a>
<a href="{% url 'store:signup' %}">Sign Up</a>
{% endif %}
</div>
</body>
</html>
class Category(models.Model):
Category_name = models.CharField(max_length=248, primary_key=True)
Sub_category =models.CharField(max_length=248, null=True, blank=True)
slug = models.SlugField(unique=True, blank=True) #find out about get_absolute_url
def save(self, *args, **kwargs):
self.slug = slugify(self.Category_name)
super(Category, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse ('store:cat', kwargs={'slug':self.slug})
class Meta:
verbose_name = 'Category'
verbose_name_plural = 'Categories'
class Product(models.Model):
Product_id = models.IntegerField(primary_key=True)
Product_name = models.CharField(max_length=100)
Product_image = models.ImageField(null=True,blank=True)
Price = models.DecimalField(max_digits=12, decimal_places=2)
discount_price = models.DecimalField(null=True, max_digits=12, decimal_places=2)
Quantity = models.PositiveIntegerField()
description = models.TextField(null=True)
category = models.ManyToManyField(Category)
def get_absolute_url(self):
return reverse('store:prod',kwargs={'pk':self.Product_id})
def __str__(self):
return self.Product_name
class Meta:
indexes = [
models.Index(fields=['Product_id'], name='Product_id'),
]
verbose_name = 'Product'
verbose_name_plural = 'Products