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')