1

私はモデルを持っています

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) 

次のようなクエリを実行する必要があります。

 employees = Employee.objects.filter(
                            Q(name__startswith=key_search) \
                            & Q(type__icontian= emp_type)#CAN I DO THIS?
                            Q(active=True)                            
                            )

問題:

Q(type__= emp_type) (type = models.ForeignKey(Employee_Type)) I cannot do this.

ここに誰か助けてください。

4

4 に答える 4

7

Employee_Type の名前を EmployeeType に変更する必要があります。これは、モデル名の Django 規則です。基になるテーブルは として作成されappname_employee_typeます。

andストレート条件には Q() オブジェクトは必要ありません。Q() オブジェクトは、条件、またはとのor組み合わせに役立ちます。andor

次に、クエリは次のようになります。

employees = Employee.objects.filter(name__startswith=key_search, 
                                    type=emp_type, 
                                    active=True)                            

もちろん、変数 emp_type に EmployeeType のインスタンスが含まれていると仮定します。emp_type テーブルに従業員タイプの名前が含まれている場合は、次を使用します。

employees = Employee.objects.filter(name__startswith=key_search, 
                                    type__name=emp_type, 
                                    active=True)                            
于 2009-12-18T04:46:44.490 に答える
1

Employee_Type の名前を Employeetype に変更すると、次のように動作する可能性があります。

Employee.objects.filter(employeetype__name=emp_type, name__startswith=key_search, active=True)

( では複数の条件を使用できfilter()、AND 演算子が適用されます。)

于 2009-12-18T04:27:27.147 に答える
1

例を読むhttp://www.djangoproject.com/documentation/models/or_lookups/

于 2009-12-18T04:44:59.643 に答える
0

Q オブジェクトは、動的クエリの構築に最適です。このトピックやその他のトピックをカバーする Q オブジェクトのチュートリアルは、こちらにあります: the-power-of-djangos-q-objects

于 2011-10-19T20:18:11.587 に答える