2014-04-01 73 views
0

我有一個問題:如果我在管理頁面上刪除產品的所有鏈接到其餘產品由模板創建的網址不工作了,每個頁面的管理輸入正確後,更新給出錯誤「沒有圖像匹配給定的查詢」。Django管理數據庫不

例如,如果只剩下一件產品,則從模板打印的URL應該是.../products/1,而是顯示爲../products/3,它指向無。如果我手動指向/產品/ 1,進一步混淆我也得到相同的錯誤

我猜這個問題是由於外部關係之間的圖像和產品或如何數據庫使用product_image_id但我可以'弄明白了。請幫忙!

車型

class Product(models.Model): 
    product_name = models.CharField(max_length=200) 
    product_type = models.CharField(max_length=200) 
    product_description = models.TextField() 
    def __unicode__(self): 
     return self.product_name 

class Image(models.Model): 
    product_image = models.ForeignKey(Product) 
    image = models.ImageField(upload_to='image') 

意見

def productindex(request): 
    product_list = Product.objects.all() 
    context = {'product_list' : product_list} 
    return render(request, 'polls/products.html', context) 

def productpage(request, product_image_id): 
    product = get_object_or_404(Product, pk=product_image_id) 
    image = get_object_or_404(Image, pk=product_image_id) 
    product_list = Product.objects.all() 
    return render(request, 'polls/productpage.html', {'product': product, 'image': image,  'product_list' : product_list}) 

網址

url(r'products/(?P<product_image_id>\d+)/$', views.productpage, name='productpage'), 

模板

{% for product in product_list %} 
<a href="{% url 'polls:productpage' product.id %}"><li class="procont"></li></a> 
    {% endfor %} 

回答

0

你應該確保你在每個部分引用了正確的對象。對於您的產品頁面,在網址中您應該輸入product_id

然後在您的視圖中,您可以像獲取該產品一樣獲取該產品,但不需要使用pk獲取圖像,您應該獲得product.image_set.all()以獲取與該產品相關的所有圖像。

仔細檢查教程:https://docs.djangoproject.com/en/dev/intro/tutorial01/

在這種情況下,「問題」是你的產品和「選擇」是你的形象。


這是AllTheTime的最終解決方案。基於jef79m的幫助

網址

url(r'products/(?P<product_id>\d+)/$', views.productpage, name='productpage'), 

意見

def productpage(request, product_id): 
    product_list = Product.objects.all() 
    product = get_object_or_404(Product, pk=product_id) 
    image = product.image_set.all() 
    return render(request, 'polls/productpage.html', {'product': product, 'image': image,  'product_list' : product_list}) 
+0

非常感謝你!!!!我將以具體的例子來回答問題。如果你想要把它們放到你的答案,然後我會接受它,並刪除我的。 – AllTheTime

0

我來到這些結論,解決了這個問題

網址

url(r'products/(?P<product_id>\d+)/$', views.productpage, name='productpage'), 

意見

def productpage(request, product_id): 
    product_list = Product.objects.all() 
    product = get_object_or_404(Product, pk=product_id) 
    image = product.image_set.all() 
    return render(request, 'polls/productpage.html', {'product': product, 'image': image,  'product_list' : product_list})