Troubleshooting "Linked field has invalid search: icons"

I have the following models in models.py:

class ListinoTraduttore(models.Model): traduttore = models.ForeignKey('Traduttore', related_name='Traduttore') linguaDa = models.ForeignKey(Lingua, related_name = "linguaDa") linguaA = models.ForeignKey(Lingua, related_name = "linguaA") prezzoParola = models.CharField(max_length=50, blank=True) prezzoRiga = models.CharField(max_length=50, blank=True) scontoCat = models.CharField(max_length=50, blank=True) scontoFuzzy = models.CharField(max_length=50, blank=True) scontoRipetizioni = models.CharField(max_length=50, blank=True) class Meta: verbose_name_plural = "Listini Traduttori" def __unicode__(self): return u"%s Da %s A %s Parola=%s Riga=%s ScontoCAT=%s ScontoFuzzy=%s ScontoRipetizioni=%s" % (self.traduttore, self.linguaDa, self.linguaA, self.prezzoParola, self.prezzoRiga, self.scontoCat, self.scontoFuzzy, self.scontoRipetizioni) class Traduttore(models.Model): nome = models.CharField(nomeString, max_length=50) cognome = models.CharField(cognomeString, max_length=50) nomeAzienda = models.CharField(nomeAziendaString, max_length=50, blank=True) codiceFiscale = models.CharField(codiceFiscaleString, max_length=50, blank=True) partitaIva = models.CharField(partitaIvaString, max_length=50, blank=True) indirizzo = models.CharField(indirizzoString, max_length=50, blank=True) telefono = models.CharField(telefonoString, max_length=50, blank=True) fax = models.CharField(faxString, max_length=50, blank=True) email = models.EmailField(max_length=50, blank=True) referente = models.CharField(referenteString, max_length=50, blank=True) valuta = models.ForeignKey(Valuta) metodoPagamento = models.ForeignKey(MetodoPagamento) datiBancari = models.CharField(datiBancariString, max_length=50, blank=True) programmiUtilizzati = models.ManyToManyField(Programma, blank=True) note = models.CharField(max_length=200, blank=True) listino = models.ManyToManyField(ListinoTraduttore, related_name='listino', blank=True) def __unicode__(self): return u"%s %s %s" % (self.nome, self.cognome, self.nomeAzienda) class Meta: verbose_name_plural = "Traduttori" 

In admin.py, I have the following:

 class TraduttoreAdmin(admin.ModelAdmin): list_display = ("nome", "cognome", "nomeAzienda") search_fields = ["nome", "cognome", "nomeAzienda"] class ListinoTraduttoreAdmin(admin.ModelAdmin): list_display = ("traduttore", "linguaDa", "linguaA", "prezzoParola", "prezzoRiga", "scontoCat", "scontoFuzzy", "scontoRipetizioni") search_fields = ['traduttore__nome", "linguaDa", "linguaA"] 

But when I try to search on the admin page in the ListinoTraduttore table, I have the following error:

 TypeError at /admin/itrad/listinotraduttore/ Related Field has invalid lookup: icontains Request Method: GET Request URL: http://127.0.0.1:8000/admin/itrad/listinotraduttore/?q=Fenicio Django Version: 1.4.1 Exception Type: TypeError Exception Value: Related Field has invalid lookup: icontains Exception Location: /Library/Python/2.7/site-packages/django/db/models/fields/related.py in get_prep_lookup, line 142 Python Executable: /usr/bin/python Python Version: 2.7.2 Python Path: ['/Users/nicolac/Documents/DjangoProjects/mysite', '/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages'] 
+51
exception django-admin
Aug 01 2018-12-12T00:
source share
4 answers

You tried to add __fieldname to those Lingua links in ListinoTraduttoreAdmin search_fields, for example:

 class ListinoTraduttoreAdmin(admin.ModelAdmin): list_display = ("traduttore", "linguaDa", "linguaA", "prezzoParola", "prezzoRiga", "scontoCat", "scontoFuzzy", "scontoRipetizioni") search_fields = ['traduttore__nome", "linguaDa__field1", "linguaA_field2"] 
+97
Aug 14 2018-12-12T00:
source share

Make sure that you do not add any external or multi-user fields directly to the search field.

Use the Django double-underscore convention instead. docs

 class ListinoTraduttoreAdmin(admin.ModelAdmin): list_display = ("traduttore", "linguaDa", "linguaA", "prezzoParola", "prezzoRiga", "scontoCat", "scontoFuzzy", "scontoRipetizioni") search_fields = ['traduttore__nome", "linguaDa__field1", "linguaA__field2"] 
+43
Apr 07 '13 at 14:25
source share

This (hopefully) simplifies the answer.

Do not filter in the ForeignKey field itself!


Change it

 search_fields = ['foreinkeyfield'] 

(note the two underscores)

 search_fields = ['foreinkeyfield__name'] 

name represents the name of the field from the table with which we have a relationship ForeinKey.

Hope this helps

+22
Apr 29 '16 at 14:01
source share

add to admin.py

 admin.site.register(Traduttore, TraduttoreAdmin) admin.site.register(ListinoTraduttore, ListinoTraduttoreAdmin) 

see link https://docs.djangoproject.com/en/dev/intro/tutorial02/

0
Aug 01 2018-12-12T00:
source share



All Articles