django - 如何使用 model.objects.values() 从模型“函数”中检索数据?
问题描述
这是我的模型
class ArtWork(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
title = models.CharField(max_length=40)
desc = models.TextField(max_length=100)
image = models.ImageField(upload_to=get_post_filename, null=True, blank=True)
category = models.ForeignKey('Category', null=True, blank=True, on_delete=models.SET_NULL)
album = models.OneToOneField('PostImages', related_name='model',
blank=True, null=True, on_delete=models.PROTECT)
# identifier
private_unique_id = models.CharField(max_length=200, blank=True, unique=True, default=uuid.uuid4)
public_unique_id = models.CharField(max_length=200, blank=True, unique=True, default=uuid.uuid4)
def __str__(self):
return self.title
def get_ratings(self):
like = Vote.objects.filter(artwork=self, like=True, nope=False).count()
nope = Vote.objects.filter(artwork=self, nope=True, like=False).count()
return like, nope
我想在带有“值”过滤器的视图中获取 ArtWork 模型函数“get_ratings”
在views.py中
if request.is_ajax():
posts = ArtWork.objects.filter(active=True)
data = serializers.serialize("json", posts, fields=('image', 'title', 'desc','get_ratings'))
return JsonResponse(data, content_type='application/json', safe=False)
posts = ArtWork.objects.filter(active=True).only('get_ratings').values('image', 'title', 'desc',)
return render(request, 'Home.html', {'posts': posts[:3]})
我想要做的基本上是在视图中为ajax请求返回一个对象列表,包括函数的结果
任何帮助表示赞赏,在此先感谢。
解决方案
您应该使用自定义管理器将方法应用于 QuerySet。
class ArtWorkManager(models.Manager):
def get_ratings(self):
like = Vote.objects.filter(artwork=self, like=True, nope=False).count()
nope = Vote.objects.filter(artwork=self, nope=True, like=False).count()
return like, nope
此外,您应该将以下行添加到 Artwork 模型:
objects = ArtWorkManager()
检查此链接以获取自定义管理器。
推荐阅读
- python - 如何使用 xpath 选择带有 attrs 的 div?
- ios - iOS Swift Multiline UILabel 与 UITableViewCell 内的 StackView
- ios - 为什么我收到错误“无法将类型(类)的值分配给类型 UICollectionViewDelegate、UICollectionViewDataSource?”
- entity-framework - 是否有针对 Visual Studio 2019 的 enable-migrations Command Not foundError 的解决方案?
- php - htaccess 404 和 400 重定向不适用于网站上的所有页面
- php - SQL 两个 SELECTS 多个和两个 JOINS
- sql-server - Sql 服务器备份
- c# - Unity sprite 在位置更改之前显示
- scala - com.typesafe.config.ConfigFactory.load(Config) 做什么?
- javascript - ReactJS:将状态传递给孩子返回未定义