我是Django的新手。我正在尝试检索与问题相关的所有标签。
我在models.py
上有两个课。
class Questions(models.Model):
title = models.CharField(max_length=500)
description = models.TextField(blank=True)
class Tag(models.Model):
name = models.CharField(max_length=50)
tag_on = models.ForeignKey(Questions, on_delete=models.CASCADE)
我的views.py
。
class QuestionListView(ListView):
model = Questions #assign model to display
template_name = 'index.html'
class TagListView(ListView):
model = Tag
template_name = 'index.html'
context_object_name = 'tag_list'
queryset = ?
我已将此添加到我的index.html
中。
{% for val in object_list %}
{{ val.id }} <br>
{{ val.title }} <br>
{% endfor %}
{% for tag in tag_list %}
{{ tag }}
{% endfor %}
我尝试了queryset
这样的尝试,但没有一个起作用。
queryset = Tag.objects.all().get(Tag.id=Questions.id)
queryset = Tag.objects.select_related('tag_on__id').get()
如何正确定义queryset以解决此问题?
答案 0 :(得分:1)
如果要检索与特定问题相关的所有标签:
question = Questions.objects.get(<some_condition>)
queryset = Tag.objects.filter(tag_on=question)
答案 1 :(得分:1)
您可以尝试这样做。
queryset=Tag.objects.filter(tag_on__id=<your_id>)
关于如何在模板中呈现它。
您可以执行以下操作。
def view(request):
return render(request,'index.html',context={queryset:Tag.objects.filter(tag_on__id=<your_id>)})
并在您的index.html
中{% for i in queryset %}
{{i.name}} // or any fields that you want
{% endfor %}
对于基于类的方法:
from django.views.generic import TemplateView
class yourview(TemplateView):
template_name = "index.html"
def get_context_data(self, kwargs):
context = super(yourview, self).get_context_data(**kwargs)
context['queryset'] = Tag.objects.filter(tag_on__id=<your_id>)
return context