[英]How to add can i add comment form with queryset in 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)
forms.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。
您在嘗試通過以下方式獲取 object 時遇到了他的異常:
銷售額 = Sale.objects.get(id=pk)
您可以通過此示例捕獲此錯誤
try:
sales = Sale.objects.get(id=pk)
except Sale.DoesNotExist:
return ValidationError(f'No sale by id {pk}')
嘗試檢查您傳遞給查詢的主鍵是什么,它是否存在於數據庫中,如果不存在則返回錯誤。 如果 Sale 不存在,您可能需要創建它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.