【发布时间】:2019-12-02 15:27:43
【问题描述】:
我有一个页面,其中包含 2 个表单并允许更新附加到每个表单的模型。
我还集成了消息框架,这在很大程度上是完美的。但是在发布到此页面后,您会收到两条成功消息,我想在它们的位置显示 1 条简单消息。
我尝试了其他问题中建议的各种方法;
Django: Remove message before they are displayed
Deleting/Clearing django.contrib.messages
但我无法清除消息队列。
def post(self, request, **kwargs):
profile_valid = False
user_valid = False
post_data = request.POST or None
profile_form = self.profile_form_class(
post_data,
instance=request.user.profile,
prefix='profile'
)
user_form = self.user_form_class(
post_data,
instance=request.user,
prefix='user'
)
context = self.get_context_data(
profile_form=profile_form,
user_form=user_form
)
if profile_form.is_valid():
profile_valid = True
self.form_save(profile_form)
if user_form.is_valid():
user_valid = True
self.form_save(user_form)
if profile_valid and user_valid:
# First get the messages from the above save methods
storage = messages.get_messages(request)
for message in storage:
# Need to iterate over the messages to achieve what we need
pass
# Set the messages as used
storage.used = True
# Add our simple message
messages.success(self.request, self.success_message)
return self.render_to_response(context)
我正在使用基于会话的消息存储,但这似乎对视图中的可用内容没有影响。
我正在使用;
- Django 2.2
- Python 3.7
【问题讨论】:
-
你试过this吗?那是唯一对我有用的。
-
@PedramParsian 稍作修改即可。
-
很高兴为您提供帮助。请考虑使用 working 版本的代码添加答案。
-
@PedramParsian 谢谢。我刚刚完成了测试并添加了我的解决方案。