2017-02-12 99 views
1

inspectdb后,我有这样一个模型Django的 - 过滤相关的子集(外键) - 错误

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

假设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进行过滤。

+0

非常感谢你! – AlexRusiano