[英]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.我想更改链接到日志消息 object的logdone 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.