Django 如何在联接查询中使用contains或startwith

Django 如何在联接查询中使用contains或startwith,django,django-models,Django,Django Models,我想在join查询中使用contains,但它给出了一个错误 以下是我的型号.py: class Profile(models.Model): name = models.CharField(max_length=50, primary_key=True) assign = models.CharField(max_length=50) doj = models.DateField() dob = models.DateField() cla

我想在
join
查询中使用
contains
,但它给出了一个错误

以下是我的型号.py

 class Profile(models.Model):
     name = models.CharField(max_length=50, primary_key=True)
     assign = models.CharField(max_length=50)
     doj = models.DateField()
     dob = models.DateField()

     class Meta:
        db_table = u'profile'

     def __str__(self):
         return  '%s %s %s %s' % ( self.name,self.assign,self.doj,self.dob)

     def __unicode__(self):
         return  u'%s %s %s %s' % ( self.name,self.assign,self.doj,self.dob)


    enter code here

class working(models.Model):
   w_name =models.ForeignKey(Profile, db_column='w_name')
   monday =  models.IntegerField(null=True, db_column='monday', blank=True)
   tuesday =  models.IntegerField(null=True, db_column='tuesday', blank=True)
   wednesday =  models.IntegerField(null=True, db_column='wednesday', blank=True)

   class Meta:
        db_table = u'working'

   def __str__(self):
         return  '%s %s %s %s' % ( self.w_name,self.monday,self.tuesday,self.wednesday)

   def __unicode__(self):
         return  u'%s %s %s %s' % ( self.w_name,self.monday,self.tuesday,self.wednesday)
我想用这样的东西:

m = working.objects.filter(w_name__name__contains='sushanth')

or 

m = working.objects.filter(w_name__name__startswith='sushanth')
我不断得到的错误

     File "<console>", line 1, in <module>
  File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/manager.py", line 141, in filter
    return self.get_query_set().filter(*args, **kwargs)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/query.py", line 556, in filter
    return self._filter_or_exclude(False, *args, **kwargs)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/query.py", line 574, in _filter_or_exclude
    clone.query.add_q(Q(*args, **kwargs))
  File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/sql/query.py", line 1152, in add_q
    can_reuse=used_aliases)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/sql/query.py", line 1092, in add_filter
    connector)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/sql/where.py", line 67, in add
    value = obj.prepare(lookup_type, value)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/sql/where.py", line 316, in prepare
    return self.field.get_prep_lookup(lookup_type, value)
  File "/usr/local/lib/python2.6/dist-packages/Django-1.2.4-py2.6.egg/django/db/models/fields/related.py", line 139, in get_prep_lookup
    raise TypeError("Related Field has invalid lookup: %s" % lookup_type)
TypeError: Related Field has invalid lookup: startswith
文件“”,第1行,在
文件“/usr/local/lib/python2.6/dist packages/Django-1.2.4-py2.6.egg/Django/db/models/manager.py”,第141行,在过滤器中
返回self.get\u query\u set().filter(*args,**kwargs)
文件“/usr/local/lib/python2.6/dist packages/Django-1.2.4-py2.6.egg/Django/db/models/query.py”,第556行,过滤器中
返回self.\u filter\u或\u exclude(False、*args、**kwargs)
文件“/usr/local/lib/python2.6/dist packages/Django-1.2.4-py2.6.egg/Django/db/models/query.py”,第574行,在“过滤器”或“排除”中
clone.query.add_q(q(*args,**kwargs))
文件“/usr/local/lib/python2.6/dist packages/Django-1.2.4-py2.6.egg/Django/db/models/sql/query.py”,第1152行,在add_q中
can_重用=已使用的(别名)
文件“/usr/local/lib/python2.6/dist packages/Django-1.2.4-py2.6.egg/Django/db/models/sql/query.py”,第1092行,在add_过滤器中
连接器)
文件“/usr/local/lib/python2.6/dist packages/Django-1.2.4-py2.6.egg/Django/db/models/sql/where.py”,第67行,添加
值=对象准备(查找类型,值)
文件“/usr/local/lib/python2.6/dist packages/Django-1.2.4-py2.6.egg/Django/db/models/sql/where.py”,第316行
返回self.field.get\u prep\u lookup(lookup\u类型,值)
文件“/usr/local/lib/python2.6/dist packages/Django-1.2.4-py2.6.egg/Django/db/models/fields/related.py”,第139行,在get\u prep\u查找中
raise TypeError(“相关字段具有无效的查找:%s”%lookup\u type)
TypeError:相关字段具有无效的查找:StartWith

有什么建议吗???

为什么名称字段是主键


如果没有,我建议重新创建名称字段不是主键的表。这可能会抛出筛选器逻辑。

名称字段为什么是主键


如果没有,我建议重新创建名称字段不是主键的表。这可能会抛出过滤器逻辑。

startswithnotstartwithwird,这应该是完全有效的。可能与模型有关,而不是与查询有关。@programmersbook,添加了modelstartswithnotstartwithweird,这应该是完全有效的。可能与模型有关,而不是查询。@programmersbook,添加了模型