简体   繁体   English

处理多个对象时出现意外的关键字参数

[英]Unexpected keyword argument when working with several objects

I'm trying to work with severals objects to achieve an action.我正在尝试使用多个对象来实现一个动作。

My models.py我的模型.py

 class LogBook(models.Model):
    name = models.CharField()
    
class LogMessage(models.Model):
    logbook = models.ForeignKey(LogBook, on_delete=models.CASCADE)

class LogDone(models.Model):
    logmessage = models.ForeignKey(LogMessage)
    done_status = models.BooleanField(default=False)

My view:我的观点:

def logmessage_done(request, logmessage_id, log_id, token ):
    log = get_object_or_404(LogBook, pk=log_id)
    logmessages = LogMessage.objects.filter(logbook=log)
    logdone = LogDone.objects.get_or_create(logmessage=logmessages)
    logdone.done_status = True
    logdone.update()

My url:我的 url:

"done/<int:logmessage_id>/<int:log_id>/<str:token>"

What I want to achieve:我想要达到的目标:

I want to change the status of the logdone object which is link to the logmessage object but I am not sure I have access object correctly.我想更改链接到日志消息 objectlogdone object的状态,但我不确定我是否可以正确访问 object。

What error I have:我有什么错误:

The QuerySet value for an exact lookup must be limited to one result using slicing.精确查找的 QuerySet 值必须限制为使用切片的一个结果。

Change your view like this:像这样改变你的观点:

def logmessage_done(request, logmessage_id, log_id, token ):
    log = get_object_or_404(LogBook, pk=log_id)
    logmessages = LogMessage.objects.filter(logbook=log)
    for log_message in logmessages:
       LogDone.objects.update_or_create(logmessage=log_message,defaults={"done_status": True})
   

Here, log returns a single object with id.在这里,日志返回一个带有 id 的 object。 logmessages returns a queryset with logbook = the log returned in first query. logmessages 返回一个查询集,其中 logbook = 第一个查询中返回的日志。 Have to use update_or_create method必须使用 update_or_create 方法

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM