кто-нибудь может заставить меня просто понять - PullRequest
1 голос
/ 09 мая 2020
def single(request,slug):
    pro = products.objects.get(slug=slug)
    images=productImage.objects.filter(product=pro)
    template = 'products.html'
    context = {'pro': pro,'images':images}
    return render(request, template, context)

class products(models.Model):
    title = models.CharField(max_length=120)
    desc = models.TextField()
    price = models.DecimalField(max_digits=10, decimal_places=2, default=29.99)
    sales_price = models.DecimalField(max_digits=10, decimal_places=2, blank=False,         null=False, default=0)
    slug = models.SlugField(unique=True)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    update = models.DateTimeField(auto_now_add=False, auto_now=True)
    active = models.BooleanField(default=True)

    def __str__(self):
        return self.title

    def get_price(self):
        return self.price

    def get_absolute_url(self):
        return reverse("single", kwargs={"slug": self.slug})


class productImage(models.Model):
    product = models.ForeignKey(products, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='images/')
    featured = models.BooleanField(default=False)
    Thumbnail = models.BooleanField(default=False)
    active = models.BooleanField(default=True)
    update = models.DateTimeField(auto_now_add=False, auto_now=True)

    def __str__(self):`enter code here`
        return self.product.title   

в чем задача pro = products.objects.get(slug=slug) и images=productImage.objects.filter(productt=product).

в чем разница между использованием product.productImage_set.all rahter, чем productImage.objects.filter(product=product)

1 Ответ

0 голосов
/ 09 мая 2020

Хорошо, я попробую:

pro = products.objects.get (slug = slug)

Получить все данные из products где slug из параметра равно полю slug, присутствующему в модели products. Поскольку вы сделали slug уникальным полем, pro всегда будет давать только один объект.

Другой,

product.productImage_set.all / productImage.objects.filter (product = product)

Что это означает, получите все data from productImage, где объект productImage равен полю продукта. Или у продуктов есть productImage, то есть отношение "один ко многим". Итак, вы хотите получить данные productImage этого продукта, возвращаемых значений может быть много.

Например, ваш профиль в facebook, ваш профиль один, но ваших фотографий может быть много. Итак, здесь вам нужны все фотографии из профиля, где профиль - это вы. Итак, профиль - это products, а productImage - фото .

Оба одинаковы, вы можете использовать любой из них. Предпочитаю свой выбор. Лично я чаще всего использую фильтр.

* Советы: - Рекомендуется писать классы в форме Capitalize на каждом языке программирования. Также попробуйте написать название модели в единственном числе, Product, а не products. Что ж, это не обязательно, но настоятельно рекомендуется.

...