Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法在窗体中获取或创建对象_Python_Python 3.x_Django_Django Views - Fatal编程技术网

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

Python 无法在窗体中获取或创建对象,python,python-3.x,django,django-views,Python,Python 3.x,Django,Django Views,我正在尝试获取或创建一个对象,而另一个对象是使用窗体创建的: 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

我正在尝试获取或创建一个对象,而另一个对象是使用窗体创建的:

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)
        …
从django.shortcuts导入重定向
def索引(请求、日志id、令牌):
日志=获取对象或404(日志,pk=日志id)
如果request.method==“POST”:
form=CreateLogMessage(request.POST)
如果form.is_有效():
form.instance.reported_by=request.user
form.instance.logbook=log
instance=form.save()
logdone=logdone.objects.get\u或创建(
logmessage=instance,
完成状态=错误
)
返回重定向('name-of-some-view')
其他:
form=CreateLogMessage(request.POST)
…
由于表单每次都会创建一个新对象,因此始终会创建一个对象


注意:如果POST请求成功,您应该 实施。 这样可以避免在用户刷新日志时发出相同的POST请求 浏览器


注意:您可以将视图限制为具有


一如既往地感谢您的明确回答和帮助我(和其他人)改进代码的提示,我将查看文档并改进整个脚本。