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

Django- उपयोगकर्ताओं के बीच भेजे गए संदेशों को कैसे मैप करें

संबंधित_नाम के साथ समस्या यह है कि यह एक स्ट्रिंग होना चाहिए, जैसे:

sender_id = models.ForeignKey(User, related_name= 'invites_sent', on_delete = models.CASCADE )
recipient_id = models.ForeignKey(User, related_name= 'invites_received', on_delete = models.CASCADE)

यह उपयोगकर्ताओं को आमंत्रित करने के साथ आपकी समस्या का समाधान करता है, क्योंकि संबंधित नाम यही है। यह मानते हुए कि आपके पास इस उपयोगकर्ता के रूप में तत्काल एक उपयोगकर्ता है, आप उसके द्वारा भेजे गए सभी आमंत्रण प्राप्त कर सकते हैं:

invites = thisuser.invites_sent.all()

या उनके द्वारा प्राप्त किए गए आमंत्रण:

invites = thisuser.invites_received.all()

हो सकता है कि कोई ऐसा उद्देश्य हो जिसके बारे में मुझे जानकारी न हो, क्योंकि मैं इस सब के लिए बिल्कुल नया हूं, लेकिन मुझे concert_id में बिंदु दिखाई नहीं दे रहा है और artist_id फ़ील्ड, चूंकि वे दोनों auto_field के हैं और हमेशा समान मान वाले होते हैं, जो कि id का भी वही मान होगा फ़ील्ड, जैसा कि आपने बताया, django स्वचालित रूप से बनाता है (जब आपके पास मॉडल के लिए प्राथमिक कुंजी के रूप में कोई अन्य फ़ील्ड सेट नहीं होता है)।

मैं जो करूँगा वह निम्नलिखित है। आमंत्रण को इस प्रकार परिभाषित करें:

class Invite(models.Model):
    sender = models.ForeignKey(User, related_name= 'invites_sent', on_delete = models.CASCADE )
    recipient = models.ForeignKey(User, related_name= 'invites_received', on_delete = models.CASCADE)
    message = models.CharField(max_length = 120, blank = True, null = True)
    date_sent = models.DateTimeField(auto_now_add = True, auto_now = False)

तो आप इस तरह से नए आमंत्रण बना सकते हैं:

from appname.models import User, Invite

inviter = User.objects.get(id=57) #enter whatever id is the inviter's id
invitee = User.objects.get(id=42) #enter id of person that is being invited
new_invite = Invite(sender=inviter, recipient=invitee, message='Hello, you are invited')
new_invite.save()

और उपयोगकर्ताओं को इस तरह आमंत्रण प्राप्त करें:

from appname.models import User, Invite

thisuser = User.objects.get(id=42)
invites_sent_by_user = thisuser.invites_sent.all()
invites_received_by_user = thisuser.invites_received.all()
invites_received_after_march_seventh= thisuser.invites_received.filter(date_sent__gt='2015-03-07')

चूंकि आप विदेशी कुंजी घोषणा में निर्दिष्ट संबंधित_नाम के माध्यम से आमंत्रणों तक पहुंचने में सक्षम हैं कि उपयोगकर्ता मॉडल पर कई tomanyfield का कोई उद्देश्य नहीं है।

आशा है कि मैंने सब कुछ कवर कर लिया है

(जब से मैंने यहां सभी कोड टाइप किए हैं, टाइपो हो सकते हैं)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ClassCastException:java.math.BigInteger को java.lang पर नहीं डाला जा सकता। MySQL से कनेक्ट होने पर लांग

  2. यूटीएफ -8 में थोक सीएसवी डेटा को MySQL में आयात करना

  3. IP पता कैसे प्राप्त करें [MYSQL]

  4. शनिवार से शुरू होने वाले सप्ताहों के लिए वर्ष का सप्ताह

  5. दो टेबल संरचना के बीच अंतर