我有一个模特
class Employee_Type(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=200, verbose_name="employee type")
class Employee(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=200)
type = models.ForeignKey(Employee_Type)
address = models.CharField(max_length=500,blank=True, null=True)
telephone = models.CharField(max_length=100, blank=True, null=True)
fax = models.CharField(max_length=100, blank=True, null=True)
email = models.EmailField(max_length=200, blank=True, null=True)
active = models.BooleanField(default=True)
Run Code Online (Sandbox Code Playgroud)
我需要查询这样的事情:
employees = Employee.objects.filter(
Q(name__startswith=key_search) \
& Q(type__icontian= emp_type)#CAN I DO THIS?
Q(active=True)
)
Run Code Online (Sandbox Code Playgroud)
问题:对
Q(type__= emp_type) (type = models.ForeignKey(Employee_Type)) I cannot do this.
Run Code Online (Sandbox Code Playgroud)
这里有人请帮帮我?
Employee_Type应重命名为EmployeeType.这是模型名称的Django约定.基础表将创建为appname_employee_type
.
对于直线and
条件,您不需要Q()对象.Q()对象对or
条件或组合and
s和or
s 很有用.
那么你的查询将是:
employees = Employee.objects.filter(name__startswith=key_search,
type=emp_type,
active=True)
Run Code Online (Sandbox Code Playgroud)
当然,假设变量emp_type包含EmployeeType的实例.如果emp_type表包含员工类型的名称,请使用:
employees = Employee.objects.filter(name__startswith=key_search,
type__name=emp_type,
active=True)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3678 次 |
最近记录: |