PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

django ORM का उपयोग करके आप विदेशी कुंजी फ़ील्ड पर दो तालिकाओं में कैसे शामिल होते हैं?

मैं कुछ समय के लिए django के साथ काम कर रहा हूं और मुझे टेबल जॉइन करने में काफी कठिन समय मिला है, लेकिन मुझे लगता है कि मैं अंततः समझता हूं और मैं इसे दूसरों को पास करना चाहता हूं ताकि वे उस निराशा से बच सकें जो मेरे पास थी इसके साथ।

निम्नलिखित model.py पर विचार करें:

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'

यहां हम देख सकते हैं कि location_id EventsBoardmeeting . में EventsMeetinglocation . में आईडी के लिए एक विदेशी कुंजी है . इसका मतलब है कि हमें EventsMeetinglocation . में जानकारी को क्वेरी करने में सक्षम होना चाहिए EventsBoardmeeting . के माध्यम से जाकर .

अब निम्नलिखित विचारों पर विचार करें.py:

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

जैसा कि पहले कई बार अन्य पदों में कहा गया है, django स्वचालित रूप से जुड़ने का ख्याल रखता है। जब हम EventsBoardmeeting . में सब कुछ क्वेरी करते हैं हम विदेशी कुंजी द्वारा भी कोई भी संबंधित जानकारी प्राप्त करते हैं, लेकिन जिस तरह से हम इसे html में एक्सेस करते हैं वह थोड़ा अलग है। हमें उस जॉइन से जुड़ी जानकारी तक पहुंचने के लिए विदेशी कुंजी के रूप में उपयोग किए जाने वाले चर के माध्यम से जाना होगा। उदाहरण के लिए:

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

उपरोक्त तालिका में उन सभी नामों का संदर्भ देता है जो विदेशी कुंजी पर शामिल होने का परिणाम थे। x अनिवार्य रूप से EventsBoardmeeting है तालिका, इसलिए जब हम x.location_id . तक पहुँचते हैं हम विदेशी कुंजी का उपयोग कर रहे हैं जो हमें 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. PostgreSQL में परिकलित / परिकलित / आभासी / व्युत्पन्न कॉलम

  2. Java Enums, JPA और Postgres enums - मैं उन्हें एक साथ कैसे काम करूँ?

  3. अद्यतन विवरण में विंडो फ़ंक्शन का उपयोग करना

  4. तालिका से पिछले तीन महीने के रिकॉर्ड प्राप्त करें

  5. PostgreSQL के लिए उपलब्ध डेटाबेस आरेख टूल का अवलोकन