我正在製作一個工具庫存/跟蹤系統。我目前的問題是,如何收集當前檢出的工具總數,然後從該工具的總數量中減去該數量。這樣我可以顯示手頭的數量。以便用戶可以確保該工具當前在商店中,並且不會被借用該工具的人檢出。django外鍵查詢彙總數據
型號:
class ActiveTransactionManager(models.Manager):
def get_queryset(self):
return super(ActiveTransactionManager, self).get_queryset().filter(CheckInDate = None)
class Tool(models.Model):
ToolID=models.CharField(max_length=100, primary_key = True, unique=True, db_column='ToolID')
Quantity=models.IntegerField(null=False)
Location=models.CharField(max_length=100, null=False)
CategoryID=models.IntegerField(null=True)
Deleted=models.BooleanField(default=0)
objects=models.Manager()
class Meta:
managed=True
db_table='Tool'
def __unicode__(self):
return self.ToolID
def get_absolute_url(self):
return reverse("ToolSearch:toolSearchResults", kwargs={"pk": self.ToolID})
class ToolCheckIn(models.Model):
CheckOutID=models.AutoField(primary_key=True)
ToolID=models.ForeignKey(Tool, db_column='ToolID', on_delete=models.CASCADE,)
PartyID=models.ForeignKey(Borrower, db_column='PartyID', on_delete=models.CASCADE,)
Quantity=models.IntegerField(null=False)
CheckOutDate=models.DateField(null=False, default=datetime.datetime.now)
CheckInDate=models.DateField(null=True)
Deleted=models.BooleanField(default=0)
objects=ActiveTransactionManager()
class Meta:
managed=True
db_table='ToolTransaction'
ordering=('CheckOutID',)
def __unicode__(self):
return str(self.CheckOutID)
def get_absolute_url(self):
return reverse("ToolSearch:toolCheckin", kwargs={"pk": self.CheckOutID})
查看:
def tool_search(request):
if request.method == 'POST':
instance = None
pk = (request.POST.get('toolid', 'Nothing Found'))
instance = Tool.objects.all().filter(ToolID__icontains=pk)
context = {
"ToolID": instance
}
return render(request, "toolsearchresults.html", context)
return render(request, "toolsearch.html")
我收到此錯誤:相關領域得到了無效查詢:icontains 我已刪除上面列出的代碼,在我看來,線導致錯誤: queryset = ToolCheckIn.objects.all()。filter(ToolID_id__icontains = pk)
不確定是否我可以從ORM中實現這一點,或者如果我需要編寫一些原始的sql來實現這一點。我目前正在使用MYSQL數據庫。
任何想法或想法,將不勝感激。
謝謝!
我想你錯誤地寫了'Tool'而不是'ToolCheckIn'在你看過的**視圖**中,稍後你會提到查詢爲ToolCheckIn.objects.all()。是這樣嗎?因爲我可能會得到答案。 –
Tool.objects.all用於檢索與搜索到的ToolID匹配的工具的所有數據。我還需要一個ToolTransaction對象,以便我可以爲每個ToolID添加ToolTransactions的數量,並從Tool中的每個ToolID的Total Quantity中減去它。然後,我可以從總量中減去ToolTransaction工具的數量,以告知用戶當前有多少工具。如果這是有道理的。讓我知道如果更多的澄清會有所幫助。 – furiousGeorge
所有我問的是,當你在''tool = Tool.objects.all()行''tool_search'函數的stackoverflow中寫下你的這個問題時,你是否犯了一個**錯字**過濾器(ToolID__icontains = pk)'?它必須是** ToolCheckIn.objects.all()**而不是** Tool.objects.all()** ??這是我的疑問。 –