Как фильтровать объекты по значению одного из его полей в django?
У меня есть приложение django с urls.py:
path('<str:slug>/', views.article),
Когда пользователь набирает название товара на моем сайте, запускается представление:
def article(request, slug):
videos = models.Video.objects.filter(article=slug)
return render(request, 'videos/at_detail.html', {'videos': videos})
Если я добавляю print(slug)
где-то в функции, она возвращает слово, которое я ввел в url, так что эта часть работает.
модели:
class article(models.Model):
name = models.CharField(max_length=30, null=True)
slug = AutoSlugField(populate_from='name', unique=True, default=None)
created_on = models.DateTimeField(default=timezone.now)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, default=None)
def __str__(self):
return self.name
class Meta:
verbose_name = "Articles"
class Video(models.Model):
video_id = models.UUIDField(
primary_key=True,
default=uuid.uuid4,
editable=False
)
title = models.CharField(max_length=50)
description = models.CharField(max_length=500)
file = models.FileField()
article = models.ForeignKey(at, on_delete=models.CASCADE)
def __str__(self):
return str(self.title) + " - " + str(self.at)
class Meta:
verbose_name_plural = "Videos"
verbose_name = "Video"
Что не работает, и что я пытаюсь сделать, это получить все объекты, которые имеют то же значение 'article', что я ввел в свой url. Например, если я введу 127.0.0.1:8000/blueberry/
, я получу все объекты с полем article=blueberry
.
Возможно ли это, и если да, то как я могу это сделать?
Вы пробовали Video.objects.filter(article__slug__iexact=slug)
?