Python 如何为我的模型创建一个计算ArrayField列中字符串对象总数的函数?
试图在我的模型中创建一个名为Python 如何为我的模型创建一个计算ArrayField列中字符串对象总数的函数?,python,django,django-rest-framework,Python,Django,Django Rest Framework,试图在我的模型中创建一个名为stock\u count的列,该列查找我的ArrayField(),也称为stock\u list中的字符串对象总数。这是我的功能 def total_stocks_calc(self): self.stock_count = Bucket.objects.aggregate(Sum('stock_list', distinct=True)) self.save() 然而,它似乎没有做任何事情,没有计算,在我的模型、管理页
stock\u count
的列,该列查找我的ArrayField()
,也称为stock\u list
中的字符串对象总数。这是我的功能
def total_stocks_calc(self):
self.stock_count = Bucket.objects.aggregate(Sum('stock_list', distinct=True))
self.save()
然而,它似乎没有做任何事情,没有计算,在我的模型、管理页面和DRF界面中留下空白字段
编辑:用新的实现更新帖子
这是我的模型
class Bucket(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='buckets')
users = models.ManyToManyField(settings.AUTH_USER_MODEL)
category = models.CharField(max_length=30, choices=category_options)
name = models.CharField(max_length=35)
created = models.DateTimeField(default=timezone.now)
slug = models.SlugField(unique=True, blank=True)
stock_count = models.IntegerField(blank=True, null=True)
stock_list = ArrayField(models.CharField(max_length=6,null=True),size=30,null=True)
about = models.CharField(max_length=75)
objects = models.Manager()
bucketobjects = BucketObjects()
class Meta:
ordering = ('-created',)
def total_stocks_calc(self):
self.stock_count = Bucket.objects.annotate(stock_count=F('stock_list__len'))
self.save()
def __unicode__(self):
return self.stock_list
想知道在
ArrayField()
中计算项目总数的正确方法,请提前感谢。在ArrayField
中提供了len
查找字段,您可以通过该字段获得计数
像
感谢您的评论,我测试了您的代码片段,但我正在尝试让它正常工作,但我无法让它开始计算
阵列字段中有多少项。我在OG帖子中添加了一个新的编辑,向您展示了我是如何实现的。
from django.db.models import F
Bucket.objects.annotate(stock_count=F('stock_list__len'))