Django: как переопределить функцию save() в классе модели, чтобы она отображала сохраненную информацию в html-шаблоне?

Я новичок в мире django и веб-разработке в целом

я хочу сделать предварительный просмотр данных, сохраненных в одной из созданных моделей "Tool"

в models.py

class Tool(models.Model):
    text1 = models.CharField(max_length=255)
    text2 = models.CharField(max_length=255)
    text3 = models.CharField(max_length=255)

    def save(self, *args, **kwargs):
        #override code
        super(Tool, self).save(*args, **kwargs)

теперь я знаю, что мне нужно переопределить метод save() внутри класса Tool, но я не знаю, как это делается?

в файле veiws.py я сделал следующее

from .models import Tool

def preview(request):
    context = {
    "Tools": Tool.object.all()
    }
    
    return render (request,'myApp/preview.html',context)

и в файле preview.html у меня есть следующее

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <p>{{Tools.text1}}</p>
    <p>{{Tools.text2}}</p>
    <p>{{Tools.text3}}</p>
</body>
</html>

теперь отсюда, как я могу отобразить html внутри save() в классе Tool?

Вам нужно выполнить итерацию таким образом :

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
{% for tool in Tools %}
    <p>{{tool.text1}}</p>
    <p>{{tool.text2}}</p>
    <p>{{tool.text3}}</p>
{% endfor %}
</body>
</html>

Из ваших комментариев следует, что вы используете Django Admin для добавления или изменения объектов Tool. Вы хотите перенаправить пользователя в представление preview после добавления и/или изменения инструмента. Вам нужно добавить следующие методы в ваш класс ToolAdmin:

def response_add(self, request, obj, post_url_continue=None):
    return redirect('preview')

def response_change(self, request, obj):
    return redirect('preview')
Вернуться на верх