【问题标题】:How to filter by field name in model manager (NameError)如何在模型管理器中按字段名称过滤(NameError)
【发布时间】:2020-10-30 19:58:27
【问题描述】:

models.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()

ma​​nagers.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

【问题讨论】:

    标签: django django-model-field


    【解决方案1】:

    试试:

    return self.filter(membership_end__gte=datetime.Now()).values_list('student_id', 'chat_user_sid')
    

    我认为你不能使用>=<=,所以你必须使用gtelte。您的代码中的所有内容看起来都很好。所以,我怀疑>= 导致了这个错误。 Refs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多