संबंधित_नाम के साथ समस्या यह है कि यह एक स्ट्रिंग होना चाहिए, जैसे:
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 का कोई उद्देश्य नहीं है।
आशा है कि मैंने सब कुछ कवर कर लिया है
(जब से मैंने यहां सभी कोड टाइप किए हैं, टाइपो हो सकते हैं)