model.py
class Tdzien(models.Model): dziens = models.SmallIntegerField(primary_key=True, db_column='DZIENS') dzienrok = models.SmallIntegerField(unique=True, db_column='ROK') class Tnogahist(models.Model): id_noga = models.ForeignKey(Tenerg, primary_key=True, db_column='ID_ENERG') dziens = models.SmallIntegerField(db_column='DZIENS')
What I want is to get id_noga where dzienrok=1234. I know that dziens should be
dziens = models.ForeignKey(Tdzien)
but it isn't and I can't change that. Normally I would use something like
Tnogahist.objects.filter(dziens__dzienrok=1234)
but I don't know how to join and filter those tables without foreignkey.
No joins without a foreign key as far as I know, but you could use two queries:
Tnogahist.objects.filter(dziens__in=Tdzien.objects.filter(dzienrok=1234))
It's possible to join two tables by performing a raw sql query. But for this case it's quite nasty, so I recommend you to rewrite your models.py.
You can check how to do this here
It would be something like this:
from django.db import connection def my_custom_sql(self): cursor = connection.cursor() cursor.execute("select id_noga from myapp_Tnogahist a inner join myapp_Tdzien b on a.dziens=b.dziens where b.dzienrok = 1234") row = cursor.fetchone() return row
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With