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,添加了模型