I’m learning Django, so far so good, however I am stuck with the
I have two models in django no foreign in tables:
ID = models.AutoField()
Name = models.CharField()
City = models.CharField()
ICAO = models.CharField()
ICAO = models.CharField())
ATC_Type = models.CharField()
Frequency_MHz = models.DecimalField()
Now I want to create a listview but I want to join table fields
Airport_Frequency.ICAO to show in frequency list - SQL statement:
SELECT DISTINCT a.ICAO, b.ICAO, b.Name FROM airport as b, airport_frequency as a WHERE a.ICAO = b.ICAO
model = Airport_Frequency
How to refer in the
Airport_FrequencyListViewview above to another model? Is it possibe, to do that without adding airport = models.ForeignKey(Airport, null=True) field to Airport_Frequency(models.Model) class.
Can someone give me a hint ?
Django does not directly support joins of models where there are no direct key relationships.
Is this relationship a many-to-one? If so, in which direction? Or is this a one-to-one?
Assuming it’s a Many-to-one, with the many-side being Airport_Frequency, you’ve got a couple of choices:
- Create the foreign key field as you’ve described
- Assuming there’s only one entry in Airport for each ICAO, you could add the unique constraint to the ICAO field, then define the ICAO field in the Airport_Frequency table as a foreign key to that field.
- You can add a second query to filter Airport_Frequency for each Airport
One item I’ll note - it doesn’t make sense to reference a CBV in a model. A view takes an HTTP request and returns an HTTP response - usually either HTML or JSON. You might want to become more familiar with the sequence of events as they occur in a CBV. For that I suggest becoming more familiar with the Classy Class Based View site and the CBV diagrams pages.
Thanks now it is clear that not all sql statements can be used in Django.
This is many to one airport_frequency table has many couple the same icao rowa with different frequency while airport table has only one. So solution to add foreign key to airport_frequency table is the best. Also i will add unique const to airport table.
But can you give me a tip how to call airport table in airport_frequenciesm view. Is it with “__”?