[ create a new paste ] login | about

Link: http://codepad.org/c6VODLRf    [ raw code | output | fork ]

Python, pasted on Jan 26:
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>]


Output:
1
2
3
4
  Line 38
    >>> from my_company.models import  Employee, Dependent
     ^
SyntaxError: invalid syntax


Create a new paste based on this one


Comments: