我在www.example.com上有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',这是我在我的网址输入.所以,例如:如果我输入127.0.0.1:8000/blueberry/
,我将得到字段为article=blueberry
的所有对象。
这可能吗?如果可能,我怎么做?
编辑#1
我把videos = models.Video.objects.filter(article=slug)
写成了@AnkitTiwari注解的videos = models.Video.objects.filter(at__slug=slug)
,这样就消除了错误,但是如果我写print(videos)
,我得到的查询集是空的:<QuerySet []>
。我有视频在我的数据库虽然。如果我做videos = models.Video.object.all()
和print(videos.title)
我得到一个视频在我的数据库标题。如果我做这件事与2个视频我得到一个错误,这说明我不能显示标题的2个元素。但我得到查询集与信息的2个视频。
那么,尽管我的数据库中有视频,但为什么我的查询集为空?
1条答案
按热度按时间biswetbf1#
你试过
Video.objects.filter(article__slug__iexact=slug)
吗?