PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana Anda menggabungkan dua tabel pada bidang kunci asing menggunakan Django ORM?

Saya telah bekerja dengan Django untuk sementara waktu sekarang dan saya memiliki waktu yang cukup sulit untuk mencari tahu tabel bergabung, tetapi saya pikir saya akhirnya mengerti dan saya ingin meneruskan ini kepada orang lain sehingga mereka dapat menghindari frustrasi yang saya miliki dengan itu.

Perhatikan model.py berikut:

class EventsMeetinglocation(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=200)

    class Meta:
        managed = True
        db_table = 'events_meetinglocation'

class EventsBoardmeeting(models.Model):
    id = models.IntegerField(primary_key=True)
    date = models.DateTimeField()
    agenda_id = models.IntegerField(blank=True, null=True)
    location_id = models.ForeignKey(EventsMeetinglocation)
    minutes_id = models.IntegerField(blank=True, null=True)

    class Meta:
       managed = True
       db_table = 'events_boardmeeting'

Di sini kita dapat melihat bahwa location_id di EventsBoardmeeting adalah kunci asing untuk id di EventsMeetinglocation . Ini berarti bahwa kita harus dapat menanyakan informasi di EventsMeetinglocation melalui EventsBoardmeeting .

Sekarang perhatikan views.py berikut:

def meetings(request):
    meetingData = EventsBoardmeeting.objects.all()
    return render(request, 'board/meetings.html', {'data': meetingData })

Seperti yang dinyatakan berkali-kali sebelumnya dalam posting lainnya, Django menangani penggabungan secara otomatis. Saat kami menanyakan semuanya di EventsBoardmeeting kami juga mendapatkan informasi terkait dengan kunci asing juga, tetapi cara kami mengakses ini di html sedikit berbeda. Kita harus melalui variabel yang digunakan sebagai kunci asing untuk mengakses informasi yang terkait dengan gabungan itu. Misalnya:

{% for x in data %}
   {{ x.location_id.name }}
{% endfor %}

Referensi di atas SEMUA nama dalam tabel yang merupakan hasil gabungan pada kunci asing. x pada dasarnya adalah EventsBoardmeeting tabel, jadi ketika kita mengakses x.location_id kami mengakses kunci asing yang memberi kami akses ke informasi di EventsMeetinglocation .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyalin dari file CSV ke tabel PostgreSQL dengan header dalam file CSV?

  2. Operator PostgreSQL IN dengan kinerja buruk subquery

  3. Hak Istimewa PostgreSQL &Manajemen Pengguna - Yang Harus Anda Ketahui

  4. Apakah ada cara untuk mendefinisikan konstanta bernama dalam kueri PostgreSQL?

  5. SELECT DISTINCT lebih lambat dari yang diharapkan di meja saya di PostgreSQL