Mam modelu django tak:Django - wartość Dostęp ForeignKey bez uderzania bazy
class Profile_Tag(models.Model):
profile = models.ForeignKey(Profile)
tag = models.ForeignKey(Tag)
i widok tak:
pts = Profile_Tag.objects.all()
for pt in pts:
print pt.profile.id
jest jakiś sposób, aby uzyskać dostęp do ForeignKey profil bez uderzania baza danych za każdym razem? Nie chcę wysyłać zapytania do tabeli profili. Chcę tylko pobrać identyfikatory z tabeli Profile_Tag.
Skąd wiadomo, że "trafia" do bazy danych? Istnieje obszerne zarządzanie pamięcią podręczną zarówno w warstwie ORM, jak i w bazie danych. –
Cóż, dla każdego, kto to czyta i odpowiada na pytanie Lott'a ... robi to trafienie DB w Django 1.4 (przynajmniej). Możesz włączyć rejestrowanie bazy danych, aby zobaczyć wszystkie zapytania, a 'pt.profile.id' powoduje zapytanie, natomiast' pt.profile_id' nie. Możliwe, że wywołanie ".id" nie spowoduje trafienia, więc może się to zmienić w przyszłości (lub już jest inaczej, nie testowałem nowszych wersji). –