django查询比较两个模型

时间:2019-01-31 02:41:42

标签: python django django-models django-views

我有3个模型,我想展示申请休假的用户,但我不知道该怎么做。用户与新假期之间的关系是一对多的,与新假期之间的假期余额是多对多的,用户余额之间是一对一的关系。我只想显示来自用户和新休假的数据。

 class newleave(models.Model):
    user=models.ForeignKey(User,default='',on_delete=models.CASCADE)
    leave_balance=models.ManyToManyField(Leave_Balance)
    leave=(
            ('annual','annual'),
            ('sick','sick'),

        )

    Leave_type=models.CharField(max_length=100,choices=leave,blank=False,default='')
    dp=(
        ('test','test'),
        ('test1','test1'),

    )

    department=models.CharField(max_length=100,choices=dp,blank=False,default='')
    Start_Date=models.DateField(null=True, blank=False, default=None)
    End_Date=models.DateField(null=True, blank=False, default=None)
    Total_working_days=models.FloatField(null=True, blank=False, default=None)

       def __unicode__(self):
            return  self.Leave_type


class Leave_Balance(models.Model):                                          
        user=models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True,)
    Outstanding_balance=models.FloatField(null=True, blank=True,  default=None)
    Monthly_entitlement=models.FloatField(null=True, blank=True, default=None)
    Monthly_consumption=models.FloatField(null=True, blank=True, default=None)
    Leave_current_balance= models.FloatField(null=True, blank=True, default=None)
    Month=models.CharField(max_length=100,default="",null=True)
    Year=models.CharField(max_length=100,default='')

      def __unicode__(self):
         return  self.Year

1 个答案:

答案 0 :(得分:0)

获取在newleave表中具有条目的用户的简单方法是

User.objects.filter(newleave_set__isnull=False).distinct()

我建议以下PEP8为您的代码风格,因为它允许程序员熟悉Python迅速拿起计划的意图是你写的。

类名应使用CapsWord约定-class NewLeave class LeaveBalance

方法名称和实例变量应为小写字母,并用下划线NewLeave.start_date