python - 查询某个时间段内创建的对象
问题描述
我正在编写一个查询,它试图获取用户列表并在 30 天(1 个月)内创建它们时返回它们。
这是我尝试过的,
模型.py
class Showcase(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING, related_name="Showcases")
content = models.TextField(null=True)
created_on = models.DateTimeField(auto_now_add=True)
slug = models.SlugField(max_length=255, unique=True)
序列化程序.py
class ShowcaseSerializer(serializers.ModelSerializer):
user = serializers.SlugRelatedField(read_only=True, slug_field='slug')
created_on = serializers.SerializerMethodField(read_only=True)
slug = serializers.SlugField(read_only=True)
class Meta:
model = Showcase
exclude = ['id']
def get_created_on(self, instance):
return instance.created_on.strftime("%d %B %Y ; %H:%M:%S %Z")
视图.py
class MostLikedMonthShowcasesView(generics.ListAPIView):
'''
Most liked showcases created within the past month
'''
serializer_class = ShowcaseSerializer
permission_classes = [AllowAny]
def get_queryset(self):
last_30_days = datetime.datetime.today() - datetime.timedelta(30)
return Showcase.objects.filter(created_on__lte=datetime.datetime.today(), created_on__gt=datetime.datetime.today()-datetime.timedelta(days=30)).values('created_on')
当我运行上面的代码时,我得到'dict' object has no attribute 'created_on'
解决方案
您抛出该错误的代码不是数据库部分,我敢打赌是这样的:
def get_created_on(self, instance):
return instance.created_on.strftime("%d %B %Y ; %H:%M:%S %Z")
显示此方法的调用者如何
另外,使用范围函数:
https://docs.djangoproject.com/en/3.0/ref/models/querysets/#range
推荐阅读
- android - 约束布局中的所有项目都移到左上角
- java - 受保护的访问说明符在 Eclipse 的子类中产生意外的编译时错误
- netlogo - Netlogo:询问“最大数量”
- javascript - javascript for循环执行顺序
- angular - 运行包含 Selenium 代码的测试时量角器出现意外控制台错误
- angular - 在本机脚本中找不到名称 com
- php - 如何根据组合框中的选择将值插入到添加到不同列的数据库表中
- c# - 如何在 Outlook 任务窗格 VSTO 中显示标签
- android - 适用于 android 的 Google ML kit Barcode Scanner 示例应用程序无法检测到条形码
- android - 显示消息后如何取消EditText的文本更改?