在inspectdb之后我有这样的模型
class User(models.Model):
id = models.AutoField(primary_key=True)
login = models.CharField(max_length=30)
...
created_on = models.DateTimeField(blank=True, null=True)
updated_on = models.DateTimeField(blank=True, null=True)
...
class Meta:
managed = False
db_table = 'users'
def __str__(self) :
return(self.lastname + ' ' + self.firstname)
class Journal(models.Model):
id = models.AutoField(primary_key=True)
user_id = models.ForeignKey(User, db_column='user_id')
notes = models.TextField(blank=True, null=True)
created_on = models.DateTimeField()
class Meta:
managed = False
db_table = 'journals'
在这种情况下,我试图获取指定用户在指定日期之后创建的所有日记帐。
user = User.objects.get(id=12)
myCount = user.journal_set.filter(created_on>myDay).count()
在这里,我收到了下一个错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'created_on' is not defined
这里有人可以提供帮助:如何计算此模型中指定用户创建的相关期刊? 谢谢!
答案 0 :(得分:0)
你不能使用“&gt;”比较Django .filter()函数中的日期。请改用“__gt =”。
所以,而不是:
myCount = user.journal_set.filter(created_on>myDay).count()
尝试:
myCount = user.journal_set.filter(created_on__gt=myDay).count()
相关文档: https://docs.djangoproject.com/en/1.10/ref/models/querysets/#gt
答案 1 :(得分:0)
假设myDay
是一个python datetime对象,你可以这样做:
myCount = user.journal_set.filter(created_on__gt=myDay).count()
(注意字段名称和运算符gt
之间的双下划线)
有关筛选字段的各种选项,请参阅https://docs.djangoproject.com/en/1.10/topics/db/queries/#retrieving-specific-objects-with-filters。如果您希望在计数中包含myDay
上创建的期刊,则可以使用created_on__gte=myDay
进行过滤。