python - 如何添加我可以在 Django 中添加带有查询集的评论表单吗?
问题描述
信息:我有 sales_item QuerySet 在视图中。我想批准、拒绝和添加对特定 sales_items 的一些评论。我还包括 html 代码,添加销售列表,表单位于下拉菜单中。菜单弹出的地方,我们填写表格。
问题:视图文件下面的代码出现错误Sale matching query does not exist.
模型.py
class Authorize(models.Model):
APPROVED = 'AP'
DECLINED = 'DL'
STATUS_CHOICES = [
(APPROVED, 'Approved'),
(DECLINED, 'Declined'),
]
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
sales_item = models.ForeignKey(Sale, on_delete=models.CASCADE, null=True, blank=True)
comments = models.TextField(max_length=1000, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
status = models.CharField(choices=STATUS_CHOICES, default=APPROVED, max_length=2)
表格.py
class AuthorizeForm(forms.ModelForm):
class Meta:
model = Authorize
fields = [
'comments',
'status'
]
视图.py
def SalesListView(request):
queryset = Sale.objects.all()
auth_form = AuthorizeForm(data=request.POST)
if request.method == 'POST':
pk = request.POST.get('pk')
sales = Sale.objects.get(id=pk)
if auth_form.is_valid():
approved = auth_form.save(commit=False)
approved.sales_item = sales
approved.save()
context = {
'sales': queryset,
'form': auth_form
}
return render(request, 'pending_sale.html', context)
索引.html
{% for object in sales %}
<div class="col-lg-6">
<div class="hpanel hblue">
<div class="panel-body">
<div class="row">
<div class="col-sm-8">
<h4><a href="#"> {{ object.customers }}</a></h4>
<p>
{{ object.content }}
</p>
<div class="row">
<div class="col-sm-3">
<div class="project-label">Saler</div>
<small>{{ object.saler }}</small>
</div>
<div class="col-sm-4">
<div class="project-label">Timestamp</div>
<small>{{ object.created_on|naturalday }}</small>
</div>
<div class="col-sm-4">
<div class="project-label">Product</div>
<small>{{ object.created_on|naturalday }}</small>
</div>
</div>
</div>
<div class="col-sm-4 project-info">
<div class="project-action">
<div class="dropdown">
<div class="btn-group">
<button class="btn btn-xs btn-default"> View</button>
<button class="btn btn-xs btn-default dropdown-toggle" data-toggle="dropdown">
Edit
</button>
<div class="dropdown-menu auth-form-dropdown dropdown-menu-sw " style="width:352px;">
<a class="Link">
<i class="pe-7s-help1" style="font-style: 150px;"></i>
</a>
<div style="font-weight: bold;">
Approvels
</div>
<div style="margin-top: 10px;">
<form action="." method="POST"> {% csrf_token %}
<div class="form-group">
<textarea name="comments" id="id_comments" cols="30" rows="2" required
class="form-control" placeholder="comments..."></textarea>
</div>
<div class=" float-right">
<div id="id_status">
<input type="radio" name="status" value="AP" required
id="id_status_0">
<label for="id_status_0" class="waves-effect waves-themed"
required>Approved</label>
<input type="radio" name="status" value="DL" required
id="id_status_1">
<label for="id_status_1" class="waves-effect waves-themed"
required>Declined</label>
</div>
</div>
<button type="submit" class="btn btn-sm btn-default"
style="font-size: 13px; padding: 3px; font-weight: 400;">submit</button>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="project-value">
<h2 class="text-info">
${{ object.products.price }}
</h2>
<p id="stores"></p>
</div>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
解决方案
您传递的主键('pk')无效。尝试使用简单的打印语句获取一些 id 即主键
q=Sale.objects.all().values('id')
print(q)
尝试这两个命令以了解您有哪些可用的 id 选项,然后尝试处理查询集。
无论如何,还有另一种方法可以完成此任务,而不是使用表单,您可以将 id 直接传递到 url 部分。这是一个很好的教程,解释了如何通过 url 传递 id。
推荐阅读
- python - 如何读取文件,将二进制缓冲区转换为二进制字符串,然后在 python 中再次将二进制字符串转换为二进制缓冲区?
- swift - GTLRSheets_Color 不持有价值
- c++ - 在 C++ 中打印对角三角形函数
- java - JAVA 如何更新已绘制的字符串?
- xml - 从海康威视 LPR 摄像头获取车牌(仅返回最后 20 个车牌) 如何检索更多?
- google-analytics - Google Analytics(分析)APP+WEB 属性的比较维度已禁用
- javascript - 如何创建无名异步函数 - Nodejs
- node.js - 发送 json 响应后无法使用 cookie 设置标头
- spring - Jetty:Spring Boot 2 中 JSON 反序列化的空闲超时过期异常
- reactjs - 打字稿中的对象可能是“未定义”