如何在模型管理器中按字段名称进行筛选(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')

我认为你不能使用>=<=,所以你必须使用gtelte。代码中的所有内容看起来都很好。所以,我怀疑>=是造成这个错误的原因。参考

最新更新