django - 如何在模型管理器中按字段名称过滤(NameError)
问题描述
模型.py
class StudentProfile(models.Model):
student = models.OneToOneField(
User, related_name='student', primary_key=True, parent_link=True, on_delete=models.CASCADE)
membership_end = models.DateTimeField(
verbose_name="Membership End Date", default=now, editable=False)
objects = StudentProfileManager()
管理者.py
class StudentQuerySet(models.QuerySet):
def get_student_chat_list(self):
return self.filter(membership_end >= datetime.Now()).values_list('student_id', 'chat_user_sid')
class StudentProfileManager(models.Manager):
def get_queryset(self):
return StudentQuerySet(self.model, using=self._db)
def get_student_chat_list(self):
return self.get_queryset().get_student_chat_list()
这应该有一个非常简单的解释,但我不明白这里有什么问题。我收到以下错误:
NameError: name 'membership_end' is not defined
解决方案
尝试:
return self.filter(membership_end__gte=datetime.Now()).values_list('student_id', 'chat_user_sid')
我不认为你可以使用>=
or <=
,所以你必须使用gte
or lte
。您的代码中的所有内容看起来都很好。所以,我怀疑>=
是导致该错误。参考文献
推荐阅读
- postgresql - 使用 Postgres 查询构建所需的结果对象时引发错误
- go - 如何在gorm中添加枚举?
- robotframework - 机器人框架:无法关闭弹出窗口
- python - Pygame 坐标在不同对象之间同步
- java - Jackson ObjectMapper CUSTOM 全局过滤器使用
- linux - 从提交哈希中获取脚本和路径名
- c# - 如何使用 .Net Core 解决 iTextSharp 中未找到 pdf 标头签名的错误?
- django - django模板条件扩展
- javascript - 搜索 javascript 对象以返回相关的 catId
- gitlab-ci - 如何在 Gitlab 中为非主分支的 Web 界面制作管道?(运行管道按钮)