我在操作py+Django 写网页,遇到QuerySet filter的save错误。
錯誤说’QuerySet’ object has no attribute ‘save’,也就是说這是一个集合QuerySet,而对于集合的话,是没有“save”这个属性。
请问该如何修正才能正确地修改? 谢谢
以下是提供我的程式代码
Models:
Software Table
class Software(models.Model):
STATUS_CHOICES = [
(0, '规划中'),
(1, '开发中'),
(2, '使用中'),
(3, '已废弃')
]
name = models.CharField(max_length=100, verbose_name="系统名称")
url = models.CharField(max_length=100, verbose_name="系统网址")
status = models.PositiveIntegerField(default=0, choices=STATUS_CHOICES, verbose_name="目前状态")
company = models.ForeignKey(Company, on_delete=models.CASCADE, verbose_name="开发公司或单位")
team = models.ForeignKey(Team, on_delete=models.DO_NOTHING, verbose_name="所属组别")
def __str__(self):
return self.name
Memo Table
class Memo(models.Model):
notes = models.TextField()
software = models.ForeignKey(Software, on_delete=models.CASCADE)
#software = models.ForeignKey(Software, on_delete=models.SET_NULL, null=True, blank=True)
timestamp = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.notes
Templates:
{% extends 'base.html' %}
{% block title %}
查核系统
{% endblock %}
{% block main %}
<h2 >编辑备注</h2>
<hr>
<form action="/editmemo/" method="POST">
{% csrf_token %}
<input name="pk" type="hidden" value={{ target_memo.id }}>
<table class="table table-striped">
<tr>
<td align=right>备注:
</td>
<td>
{% for memo in memos %}
<input type=text name="memos" size=50 value='{{memo.notes}}'>
{% endfor %}
</td>
</tr>
<tr><td> </td><td>
<input type=submit value="确定修改" class="btn btn-warning">
</td></tr>
</table>
</form>
{% endblock %}
View:
@login_required(login_url='/admin/login/')
def edit_memo(request,pk=None):
logged_user = User.objects.get(username=request.user.username)
logged_user = UserProfile.objects.get(user=logged_user)
teamid = Team.objects.get(name = logged_user.team).id
target_soft = Software.objects.get( id = pk)
item = Software.objects.get(id=pk)
if request.method=="POST":
softwareid = request.POST.get('softwareid')
item = Software.objects.get(id=pk)
memos = Memo.objects.filter(software=item)
#Memo.objects.all().update(notes=memos)
print(memos[0])
memos[0].save()
return render(request,"showdetail.html",locals())
try:
memos = Memo.objects.filter(software=item)
except:
return redirect("/showall/")
return render(request, "edit_memo.html", locals())
Url:
urlpatterns = [
path('editmemo/',views.edit_memo),
path('editmemo/<int:pk>/',views.edit_memo),
path('', views.index),
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)