I am making a select_related () request to prevent a malicious database. In my model, I:
class Item(models.Model)
user = models.ForeignKey(User, related_name='items')
name = models.CharField(max_length=255)
region = models.ForeignKey(Region, null = True, blank = True)
country = models.ForeignKey(Country, null = True, blank = True)
def get_ubicacion_name(self):
if self.region:
return self.region
else:
return self.country
class Activity(models.Model)
date = models.DateField()
item = models.ForeignKey(Item, related_name='items')
In my opinion:
ax = Activity.objects.select_related('item','item__region','item__country').all()[:40]
In my template:
{% for a in ax %}
{{ a.date }} - {{ a.get_ubicacion_name }}
{% endfor %}
the debug toolbar displays 43 queries in 53.87msbecause it clicks self.country, so select_related('item','item_region','item_country')def does not work for this?
In the shell:
>>> ac = ax[0]
>>> dir(ac)
...... '_item_cache', .......
>>> dir(ac.item)
...... '_country_cache','_region_cache',.......
thank.
source
share