Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何查找表中相同项目的编号?_Python 3.x_Django_Django Models - Fatal编程技术网

Python 3.x 如何查找表中相同项目的编号?

Python 3.x 如何查找表中相同项目的编号?,python-3.x,django,django-models,Python 3.x,Django,Django Models,我正在Django中使用python开发一个web应用程序。我有两个类,一个用于item,另一个用于item details。我想计算item details表中的类似模型,并在创建itemdetails时将其显示为item表中该模型的总数量。下面是我的模型 class Items(models.Model): model_no= models.CharField(max_length=30,null= True ) description=models.CharField(max_lengt

我正在Django中使用python开发一个web应用程序。我有两个类,一个用于item,另一个用于item details。我想计算item details表中的类似模型,并在创建itemdetails时将其显示为item表中该模型的总数量。下面是我的模型

class Items(models.Model):

model_no= models.CharField(max_length=30,null= True )
description=models.CharField(max_length=50,null= True )
total_qty=models.IntegerField(default= 0,null= True )
created = models.DateTimeField(default=datetime.now())


class ItemDetails(models.Model):
STATUS = (
    ('In-Stock', 'In-Stock'),
    ('Out-of-Stock', 'Out-of-Stock'),
    ('issued-to', 'issued-to')
)
serial_no = models.CharField(max_length=50, null=True)
rem_qty = models.IntegerField(default=0)
status = models.CharField(max_length=30, default='in-stock', choices=STATUS)
model_no=models.ForeignKey(Items,on_delete= models.CASCADE)
issued_to =models.ForeignKey(Prosecutions,on_delete=models.CASCADE)
employee_name=models.CharField(max_length=50,null=True)
created = models.DateTimeField(default=datetime.now())

我认为这两个模型之间的关系与下面的模型类似

class Items(models.Model):
   name = models.Charfield(max_length=100)

class ItemDetails(models.Model):
   name = models.Charfield(max_length=100)
   item = models.ForeignKey(Item, on_delete=models.CASCADE)
如果是这样,您可以通过以下查询访问连接到特定Item对象的ItemDetail对象的数量

item = Items.objects.get(id=1)
item_count = item.itemdetails_set.all().count()

下面是我问题的答案。这花了一些时间,但我已经按照我的要求找到了解决方案

    def calc_total_qty():
for item in Items.objects.annotate(itemdetails_count=Count('itemdetails')):
    item.total_qty = item.itemdetails_count
    item.save(update_fields=['total_qty'])       
    

请包括任何相关代码。可以找到关于MCVE的更多信息,我已经在上面列出了我的模型。嘿,谢谢你的回复。我已经尝试了你的代码,但是它说“ItemDetails”对象没有属性“item\u set”。下面是我尝试的“ItemDetails=ItemDetails.objects.get(id=15)item\u count=ItemDetails.item\u set.all().count()打印(item\u count)对不起,我弄错了,我正确地更新了答案。ItemDetail对象只能与一个Item对象有关系。所以我们需要用Item对象发送这个查询。你能告诉我怎么做吗?当然,假设有一个Items对象。比如
item=Items.objects.get(id=1)
。您可以通过以下查询获取链接到此对象的ItemDetails对象的数量
item.itemdetails\u set.all().count()
。在反向关系中,ItemDetails对象只能与一个Item对象链接。例如
item\u detail=ItemDetails.objects.get(id=1)
item\u detail.model\u no
将返回该对象。有关多对一关系的更多信息,请阅读本文档。谢谢兄弟,它的工作。已经解决了我的问题将近一半。另一半是,我可以用它来更新数据库上的总数量,并在每次创建itemdetail时将值保存到数据库中吗。?