2017-09-12 69 views
0

我試圖使用相關對象,但我不斷收到此錯誤 create_product()缺少1所需的位置參數:'category_id' 我一直在試圖弄清楚修正錯誤 這是我的觀點create_product()缺少1個需要的位置參數:'category_id'

def create_product(request, category_id): 
    form = ProductForm(request.POST or None, request.FILES or None) 
    category = get_object_or_404(Category, pk=category_id) 
    if form.is_valid(): 
     category_product = category.song_set.all() 
     for s in category_product: 
      if s.name == form.cleaned_data.get("song_title"): 
       context = { 
        'category': category, 
        'form': form, 
        'error_message': 'You already added that song', 
       } 
       return render(request, 'shop/product/product_create.html', 

    context) 
      product = form.save(commit=False) 
      product.category = category 
      product.save() 
      return render(request, 'music/detail.html', {'category': category}) 
     context = { 
      'category': category, 
      'form': form, 
     } 
     return render(request, 'shop/product/product_create.html', context) 

我想要使用相關的對象,但我不斷收到此錯誤 create_product()失蹤1個人需要的位置參數:「CATEGORY_ID」 我一直在試圖找出如何修復錯誤 這是我的看法

class Category(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='category_created') 
    name = models.CharField(max_length=500, db_index=True) 
    slug = models.CharField(max_length=500, blank=True) 
    images = models.ImageField(upload_to='users/%Y/%m/%d', blank=True) 

    def __str__(self): 
     return self.name 

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

class Product(models.Model): 
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='product') 
    category = models.ForeignKey(Category, related_name='products') 
    name = models.CharField(max_length=500, db_index=True) 
    slug = models.CharField(max_length=500, blank=True) 
    images = models.ImageField(upload_to='users/%Y/%m/%d', blank=True) 
    description = models.TextField(blank=True) 
    price = models.DecimalField(max_digits=10, decimal_places=2) 
    stock = models.PositiveIntegerField(blank=True) 
    available = models.CharField(max_length=25) 
    created = models.DateTimeField(auto_now_add=True) 
    updated = models.DateTimeField(auto_now=True) 

    class Meta: 
     ordering = ('name',) 
    def __str__(self): 
     return self.name 

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

這裏是我的網址爲我的觀點

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^category-create/$', views.category, name='category'), 
    url(r'^product-create/$', views.create_product, name='create_product'), 
    url(r'^category-detail/$', views.category_detail, name='category_detail'), 
] 

回答

3

由於您create_product視圖包含2個參數,你需要包括:第二個 - CATEGORY_ID給你網址爲好。

在你的urls.py變化category_product網址:

url(r'^product-create/(?P<category_id>\d+)$', views.create_product, name='create_product'), 

爲了做一個鏈接這一觀點從您的模板,你需要:

  • <a href= "{% url 'product:create_product' category_id=category.pk %}"> </a>.
  • 打造 「產品」 的命名空間在您的項目根網站上,通過在其中包含 產品網址。就像這樣:

    from .product.urls import urlpatterns as product_urls
    url(r'^products/', include(product_urls, namespace='product')),

+0

我如何鏈接到這個網址,因爲我米沒有得到反向匹配 –

+0

在回答上述回答 – Hisagr

0

編輯您的urls.py

url(r'^product-create/(?P<category_id>[0-9]+)/$', views.create_product, name='create_product'), 
相關問題