无法在窗体中获取或创建对象



当使用表单创建另一个对象时,我正在尝试获取或创建一个对象:

def index(request, log_id, token):
log = get_object_or_404(LogBook, pk=log_id)
logmessages = LogMessage.objects.filter(logbook=log_id)
form = CreateLogMessage(request.POST)
if request.method == "POST":
if form.is_valid():
instance = form.save(commit=False)
instance.reported_by = request.user
instance.logbook = log
instance.save()
logdone = LogDone.objects.get_or_create(logmessage=logmessages, done_status=False)

我正在尝试找出一种方法来获取创建的日志消息的 id,以将其传递给我的 logdone 实例。

到目前为止,我还没有找到一种方法,任何帮助将不胜感激。

创建的对象是实例,因此您可以将其实现为:

from django.shortcuts import redirect
def index(request, log_id, token):
log = get_object_or_404(LogBook, pk=log_id)
if request.method == 'POST':
form = CreateLogMessage(request.POST)
if form.is_valid():
form.instance.reported_by = request.user
form.instance.logbook = log
instance= form.save()
logdone = LogDone.objects.get_or_create(
logmessage=instance,
done_status=False
)
return redirect('name-of-some-view')
else:
form = CreateLogMessage(request.POST)
…

由于表单每次都会创建一个对象,因此始终会创建一个对象。


注意:如果 POST 请求成功,您应该redirect[Django-doc] 实现发布/重定向/获取模式 [wiki]。 这样可以避免在用户刷新 浏览器。


注意:您可以使用@login_requireddecorator [Django-doc]。

最新更新