from django.db import models
class Employee(models.Model):
name = models.CharField(max_length=30)
def __unicode__(self):
return self.name
def all_dependents(self):
return self.dependent_set.all()
class Dependent(models.Model):
employee = models.ForeignKey(Employee)
name = models.CharField(max_length=30)
school_mark = models.IntegerField(default=0)
college_mark = models.IntegerField(default=0)
def __unicode__(self):
return self.name
def parent(self):
return self.employee
def info(self):
record = (self.name, self.employee.name,
self.school_mark, self.college_mark)
print "Name: {0}, Parent: {1}, School: {2}, College: {3}".format(*record)
info = property(info)
class ProjectManager(models.Model):
employee = models.ForeignKey(Employee)
name= models.CharField(max_length=30)
def __unicode__(self):
return self.name
>>> from my_company.models import Employee, Dependent
>>> Employee.objects.all()
[]
>>> a = Employee(name='A')
>>> a
<Employee: A>
>>> Employee.objects.all()
[]
>>> a.save()
>>> b = Employee(name='B')
>>> b.save()
>>> Employee.objects.all()
[<Employee: A>, <Employee: B>]
>>> a, b = Employee.objects.all()
>>> a1 = a.all_dependents()[0]
>>> a1.info
Name: a1, Parent: A, School: 79, College: 81
>>> b.dependent_set.create(name='b1', school_mark=80, college_mark=60)
>>> b.dependent_set.create(name='b2', school_mark=68, college_mark=86)
>>> b.all_dependents()
[<Dependent: b1>, <Dependent: b2>]
>>> a.all_dependents()
[<Dependent: a1>]
>>> a
<Employee: A>
>>> b
<Employee: B>
>>> Dependent.objects.filter(school_mark__gte=75)
[<Dependent: a1>, <Dependent: b1>]
>>> Dependent.objects.filter(college_mark__gte=75)
[<Dependent: a1>, <Dependent: b2>]
>>> Dependent.objects.filter(college_mark__gte=75, school_mark__gte=75)
[<Dependent: a1>]
>>> Dependent.objects.filter(college_mark__gte=75).filter(school_mark__gte=75)
[<Dependent: a1>]
>>> print Dependent.objects.filter(college_mark__gte=75).filter(school_mark__gte=75).query
SELECT `my_company_dependent`.`id`, `my_company_dependent`.`employee_id`,
`my_company_dependent`.`name`,
`my_company_dependent`.`school_mark`,
`my_company_dependent`.`college_mark`
FROM `my_company_dependent`
WHERE (`my_company_dependent`.`college_mark` >= 75 AND `my_company_dependent`.`school_mark` >= 75 )
print Dependent.objects.filter(college_mark__gte=75, school_mark__gte=75).query
SELECT `my_company_dependent`.`id`, `my_company_dependent`.`employee_id`,
`my_company_dependent`.`name`,
`my_company_dependent`.`school_mark`,
`my_company_dependent`.`college_mark`
FROM `my_company_dependent`
WHERE (`my_company_dependent`.`school_mark` >= 75 AND `my_company_dependent`.`college_mark` >= 75 )
>>> Dependent.objects.filter(college_mark__gte=75, school_mark__gte=75)
[<Dependent: a1>]
>>> Dependent.objects.filter(college_mark__gte=75).filter(school_mark__gte=75)
[<Dependent: a1>]
>>> Dependent.objects.filter(college_mark__gte=75, school_mark__gte=75)
[<Dependent: a1>]
>>> Dependent.objects.filter(college_mark__gte=75, school_mark__gte=75)[<Dependent: a1>]
>>> Dependent.objects.filter(college_mark__gte=75).filter(school_mark__gte=75)
[<Dependent: a1>]
>>>
>>>
>>> [d.parent() for d in Dependent.objects.filter(college_mark__gte=75).filter(school_mark__gte=75)]
[<Employee: A>]
>>>
>>> [d.parent() for d in Dependent.objects.filter(college_mark__gte=75).filter(school_mark__gte=75)]
[<Employee: A>]
>>> [d.parent() for d in Dependent.objects.filter(college_mark__gte=75, school_mark__gte=75)]
[<Employee: A>]
>>>
>>> Employee.objects.filter(dependent__college_mark__gte=75)
[<Employee: A>, <Employee: B>]
>>> Employee.objects.filter(dependent__school_mark__gte=75)
[<Employee: A>, <Employee: B>]
>>> Employee.objects.filter(dependent__school_mark__gte=75).filter(dependent__college_mark__gte=75)
[<Employee: A>, <Employee: B>]
>>> Employee.objects.filter(dependent__school_mark__gte=75, dependent__college_mark__gte=75)
[<Employee: A>]
>>> print Employee.objects.filter(dependent__school_mark__gte=75, dependent__college_mark__gte=75).query
SELECT `my_company_employee`.`id`, `my_company_employee`.`name`
FROM `my_company_employee`
INNER JOIN `my_company_dependent`
ON (`my_company_employee`.`id` = `my_company_dependent`.`employee_id`)
WHERE (`my_company_dependent`.`school_mark` >= 75 AND `my_company_dependent`.`college_mark` >= 75 )
>>> print Employee.objects.filter(dependent__school_mark__gte=75).filter(dependent__college_mark__gte=75).query
SELECT `my_company_employee`.`id`, `my_company_employee`.`name`
FROM `my_company_employee`
INNER JOIN `my_company_dependent`
ON (`my_company_employee`.`id` = `my_company_dependent`.`employee_id`)
INNER JOIN `my_company_dependent` T3
ON (`my_company_employee`.`id` = T3.`employee_id`)
WHERE (`my_company_dependent`.`school_mark` >= 75 AND T3.`college_mark` >= 75 )
>>> a = Employee.objects.all()[0]
>>> a.projectmanager_set.create(name='pa1')
<ProjectManager: ProjectManager object>
>>> a.projectmanager_set.create(name='pa2')
<ProjectManager: ProjectManager object>
>>> b = Employee.objects.all()[1]
>>> b.projectmanager_set.create(name='pb1')
<ProjectManager: ProjectManager object>
>>> b.projectmanager_set.create(name='pa1')
<ProjectManager: ProjectManager object>
>>> Employee.objects.filter(dependent__school_mark__gte=75, projectmanager__name='pa1')
[<Employee: A>, <Employee: B>]
>>> Employee.objects.filter(dependent__school_mark__gte=75).filter(projectmanager__name='pa1')
[<Employee: A>, <Employee: B>]
>>> Employee.objects.filter(projectmanager__name='pa1').filter(dependent__school_mark__gte=75)
[<Employee: A>, <Employee: B>]
>>> Employee.objects.filter(projectmanager__name='pb1').filter(dependent__school_mark__gte=75)
[<Employee: B>]
>>> Employee.objects.filter(projectmanager__name='pb1', dependent__school_mark__gte=75)
[<Employee: B>]