2017-02-10 2 views
0

У меня есть продукт с изображением, но когда я пытаюсь показать изображение только этот товар django показать мне все изображение продукта, как я могу это исправить? Я стараюсь, чтобы ломтик не работал beacuse, если я делаю | slice: «0: 1» показать мне изображение, но не изображение этого продукта.Django показать только один элемент

class Product(models.Model): 
    category = models.ForeignKey(Category, related_name='product') 
    name = models.CharField(max_length=200, db_index=True) 
    slug = models.SlugField(max_length=200, db_index=True) 
    image = models.ImageField(upload_to='product/%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) 
    promo = models.BooleanField(default=False) 
    news = models.BooleanField(default=True) 
    section = models.CharField(max_length=50, choices=SECTION_CHOICES, default=None) 
    detailimage = models.ImageField(upload_to='product/detail/%Y/%m/%d', 
            blank=True) 
    detailimagetwo = models.ImageField(upload_to='product/detail/%Y/%m/%d', 
            blank=True) 
class Meta: 
     ordering = ('name',) 
     index_together = (('id', 'slug'),) 

def __str__(self): 
    return self.name 

@property 
def image_url(self): 
    if self.image and hasattr(self.image, 'url'): 
     return self.image.url 

@property 
def detail_url(self): 
    if self.detailimage and hasattr(self.detailimage, 'url'): 
     return self.detailimage.url 

@property 
def detailtwo_url(self): 
    if self.detailimagetwo and hasattr(self.detailimagetwo, 'url'): 
     return self.detailimagetwo.url 

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

Мой views.py

def product_detail(request, id, slug): 
    product = get_object_or_404(Product, 
           id=id, 
           slug=slug, 
           available=True) 
    products = Product.objects.all() 

    return render(request, 
        'shop/product/detail.html', 
        {'product': product, 
        'products': products}) 

и мой detail.html

{% extends "shop/base.html" %} 
{% load static %} 

{% block title %}{{ product.name }}{% endblock %} 
{% block content %} 
{% for p in products %} 
    <img src="{{p.detail_url}}" class="img-responsive"> 
    {% endfor %} 
    </div> 
</div> 
{% endblock %} 

если и хотят somethink больше комментарий, и я, как быстро я могу добавить.

+0

Вы хотите показать только один продукт? Потому что вы зацикливаете все продукты. Вы скопировали этот код из другого места? – Mojimi

+0

Нет, я его создаю. И я сделал. Mby легко, но я не знаю, как это сделать. – KeepItSick

+0

Ну его трудно понять, ваш английский и в чем ваша проблема, Какой у вас родной язык? Возможно, в нем есть версия stackoverflow – Mojimi

ответ

0

изменить ваш взгляд

def product_detail(request, id, slug): 
    product = get_object_or_404(Product, 
           id=id, 
           slug=slug, 
           available=True) 

    return render(request, 
        'shop/product/detail.html', 
        {'product': product}) 

и в изменении шаблона

{% for p in products %} 

в

{% for p in product %} 

вы можете решить эту проблему путем удаления одного 's' в шаблоне, но я предлагаю изменения функция просмотра, как указано

в случае, если ваш используя подушки не только адрес изображения в качестве строки изменить

{{p.detail_url}} 

в

{{p.fieldname.url}} 
Смежные вопросы