【问题标题】:Why is my query not working for room.slug为什么我的查询不适用于 room.slug
【发布时间】:2021-02-06 13:49:45
【问题描述】:

目前,我正在尝试有 4 个类别,每个类别有 4 个房间。我正在尝试编写视图以进入该特定房间,但不知何故,即使我可以呈现页面,我查询的内容也不起作用。为什么会这样?

这意味着当我执行{{ room_slug }}{{room.slug}} 时,什么都没有出来

基于函数的views.py

def room_view(request, category_slug, room_slug):
    context = {}
    category = get_object_or_404(Category, slug=category_slug)
    room = Room.objects.filter(slug=room_slug,typeofcategory=category)
    context['room'] = room
    return render(request, "room.html", context)

模板

{{ room.slug }}

urls.py

    path('<slug:category_slug>/<slug:room_slug>/', room_view , name= "room"),

models.py

class Category(models.Model):
    type_of_category = models.CharField(max_length=80, null=False, blank=False, choices=type_of_category_CHOICES, default=True, unique=True)
    slug = models.SlugField(blank=True, unique=True)

class Room(models.Model):
    typeofcategory = models.ForeignKey(Category, related_name='typeofcategory', on_delete=models.CASCADE)
    slug = models.SlugField(blank=True)

【问题讨论】:

    标签: python django django-models django-views django-templates


    【解决方案1】:

    filter 返回一个查询集而不是模型的实例。您可能想改用get

    room = Room.objects.get(slug=room_slug,typeofcategory=category)
    

    实际上只是为了方便使用get_object_or_404

    room = get_object_or_404(Room, slug=room_slug, typeofcategory=category)
    

    【讨论】:

      猜你喜欢
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2019-12-05
      • 1970-01-01
      • 2020-08-01
      相关资源
      最近更新 更多