2017-06-01 62 views
-1

我新到Django和我学习它通过一个项目,但中号仍坚持这一错误,说NoReverseMatch在/产品/制作/没有反向匹配的Django类为本次

这里是我的models.py文件

from django.db import models 
from django.conf import settings 
from django.core.urlresolvers import reverse 
# Create your models here. 
class Category(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, 
          related_name='category_created') 
    name = models.CharField(max_length=200, db_index=True) 
    slug = models.SlugField(max_length=200, db_index=True, unique=True) 

    class Meta: 
     ordering = ('name',) 
     verbose_name = 'category' 
     verbose_name_plural = 'categories' 

    def __str__(self): 
     return self.name 

class Product(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, 
          related_name='product_created', null= True,blank=True) 
    category = models.ForeignKey(Category, related_name='products') 
    name = models.CharField(max_length=200, db_index=True) 
    slug = models.SlugField(max_length=200, db_index=True) 
    image = models.ImageField(upload_to='products/%Y/%m/%d', blank=True) 
    description = models.TextField(blank=True) 
    price = models.DecimalField(max_digits=10, decimal_places=2) 
    stock = models.PositiveIntegerField() 
    available = models.BooleanField(default=True) 
    negiotiable = models.BooleanField(default=True) 
    created = models.DateTimeField(auto_now_add=True) 
    updated = models.DateTimeField(auto_now=True) 
    users_like = models.ManyToManyField(settings.AUTH_USER_MODEL, 
             related_name='product_liked', 
             blank=True) 

    class Meta: 
     ordering = ('name',) 
     index_together = (('id', 'slug'),) 

    def __str__(self): 
     return self.name 
    def get_absolute_url(self): 
     return reverse('products_detail', 
         args=[self.slug]) 

这是我views.py,但我不敢肯定,如果有什么问题我的看法

from django.views.generic import * 
from django.core.urlresolvers import reverse_lazy 
from .models import Category, Product 

class CategoryList(ListView): 
    model = Category 

class CategoryDetail(DetailView): 
    model = Category 

class ProductList(ListView): 
    model = Product 

class ProductDetail(DetailView): 
    model = Product 

class ProductCreate(CreateView): 
    model = Product 
    fields = ["category", 'name', 'image', 'description', 'price', 'stock','available', 'negiotiable'] 

class ProductUpdate(UpdateView): 
    model = Product 
    fields = ['name', 'image', 'description', 'price', 'stock','available', 'negiotiable'] 

class ProductDelete(DeleteView): 
    model = Product 
    success_url = reverse_lazy('product_list') 
+1

发布带有traceback_ *和* __our模板code_的完整错误消息。 – Selcuk

+1

你可以添加你的urls.py吗? – medullaskyline

回答

-1

我不知道这是没有追溯或urls.py的问题,但我猜你需要通过覆盖产品模型中的保存方法来自动生成slug字段。说明这里:http://fazle.me/auto-generating-unique-slug-in-django/

或者你可以试试这个:

class Product(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, 
          related_name='product_created', null= True,blank=True) 
    category = models.ForeignKey(Category, related_name='products') 
    name = models.CharField(max_length=200, unique=True) 
    slug = models.SlugField(max_length=200, unique=True) 
    image = models.ImageField(upload_to='products/%Y/%m/%d', blank=True) 
    description = models.TextField(blank=True) 
    price = models.DecimalField(max_digits=10, decimal_places=2) 
    stock = models.PositiveIntegerField() 
    available = models.BooleanField(default=True) 
    negiotiable = models.BooleanField(default=True) 
    created = models.DateTimeField(auto_now_add=True) 
    updated = models.DateTimeField(auto_now=True) 
    users_like = models.ManyToManyField(settings.AUTH_USER_MODEL, 
             related_name='product_liked', 
             blank=True) 

    class Meta: 
     ordering = ('name',) 
     index_together = (('id', 'slug'),) 

    def __str__(self): 
     return self.name 

    def get_absolute_url(self): 
     return reverse('products_detail', args=[self.slug]) 

    def save(self, *args, **kwargs): 
     self.slug = slugify(self.name) 
     super(Product, self).save(*args, **kwargs) 

注意,这样你就必须改变db_indexunique为name字段。