如何在我的视图中从模型访问未返回的CharField?

时间:2018-12-24 00:10:04

标签: python django python-3.x django-models django-views

在我开始之前,我想澄清一下我是django的初学者,所以我正在学习。

这是我的模特。py

    class MyNote(models.Model):
         title_of_note = models.CharField(max_length=200)
         date_created = models.DateTimeField('Created')
         details_note = models.TextField(max_length=2500, default="")
         def __str__(self):
             return self.title_of_note

这是我的views.py

def index(request):
    notes_list = MyNote.objects.order_by('date_created')
    context  = {'notes_list' : notes_list}
    return render(request, 'note/index.html', context)

def detail(request, note_id):
    note = get_object_or_404(MyNote, pk=note_id)
    return render(request, 'note/detail.html', {'request' : note})

我的目标是要有一个主页/ note /,title_of_note可以在我的所有笔记中进行选择。在我选择了一个便笺并单击指向一个便笺的链接(/ note / 1 /)之后,它向我显示title_of_note作为标题,并在标题下方显示我的详细信息details_note。 到现在为止,我设法以注释的标题为链接(按创建日期排序)来制作主页。一切正常,但我无法弄清楚如何将标题下的详细信息添加到/ note / 1 /页面。到目前为止,我了解到,我可以在我的models.py中将details_note添加到返回中。但是我不知道该怎么做,我知道我不能只做return self.title_of_note, self.details_note

如何在我的views.py中访问details_note

我真的没有想法,希望能有所帮助。这是我的第一个问题,对不起,如果做错了事。

我的索引模板

<body bgcolor="black">
<p><font size="5", color="white">You are at the main page of my notes.</p>
{% if notes_list %}
    <ul>
    {% for note in notes_list %}
        <li><font size="3", color="white"><a href="{% url 'note:detail' note.id %}">{{ note.title_of_note }}</a></font></li>
    {% endfor %}
    </ul>
{% else %}
    <p><font size="5", color="white">There was a problem. Probably no notes</font></p>
{% endif %}
</body>

这是我的详细信息模板

<body bgcolor="black">
    <h1><font size="5", color="white">{{ note.title_of_note }}</font></h1>
    <p><font size="3", color="pink">{{ note.details_note }}</font></p>
</body>

1 个答案:

答案 0 :(得分:1)

您需要将笔记传递给模板。

def detail(request, note_id):
    note = get_object_or_404(MyNote, pk=note_id)
    context = {'note': note}
    return render(request, 'note/detail.html', context)

在模板中,您可以从注释中获取信息,例如:{{ note.title_of_note }}{{ note.details_note }}

在您的代码中,您正在用request实例覆盖note上下文变量,请不要这样做,因为Django将添加一个request上下文变量以供在{模板。