I want to use contains in join query but it gives an error.
Following is my models.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)
I want to use something like this:
m = working.objects.filter(w_name__name__contains='sushanth')
or
m = working.objects.filter(w_name__name__startswith='sushanth')
The error that I keep getting:
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
Any suggestions??
Is there some reason why the name field is the primary key?
If there isn’t then I would suggest recreating the tables with the name field NOT as the primary key. That might be throwing the filter logic out.