Django

2011-06-02 11 views
10

में अनुयायियों/अनुसरणों को लागू करने के लिए कैसे मैं अपने Django आवेदन में अनुयायियों/निम्नलिखित सुविधा को लागू करना चाहता हूं।Django

>>> user_1 = User.objects.get(pk = 1) # <-- mark 
>>> user_2 = User.objects.get(pk = 2) # <-- john 
>>> user_1.get_profile().follows.add(user_2.get_profile()) 
>>> user_1.get_profile().follows.all() 
[<UserProfile: john>] 
>>> user_2.get_profile().follows.all() 
[<UserProfile: mark>] 
:

class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique = True, related_name = 'user') 
    follows = models.ManyToManyField("self", related_name = 'follows') 

तो मैं अजगर खोल में ऐसा करने की कोशिश की:

मैं हर उपयोगकर्ता (django.contrib.auth.User) के लिए एक UserProfile वर्ग है

लेकिन जैसा कि आप देख सकते हैं, जब मैं उपयोगकर्ता के follows फ़ील्ड में कोई नया उपयोगकर्ता जोड़ता हूं, तो दूसरी तरफ सममित संबंध भी जोड़ा जाता है। सचमुच: यदि उपयोगकर्ता 1 उपयोगकर्ता 2 का पालन करता है, तो उपयोगकर्ता 2 उपयोगकर्ता 1 का अनुसरण करता है, और यह गलत है।

मेरी गलती कहां है? क्या आप अनुयायियों को लागू करने और सही तरीके से पालन करने का एक तरीका है?

धन्यवाद दोस्तों।

उत्तर

18

अपने Many2Many संबंध में गलत पर सेट symmetrical:

follows = models.ManyToManyField('self', related_name='follows', symmetrical=False) 
+0

यह सही दोस्त है। धन्यवाद। –

+2

सममित = गलत और संबंधित_नाम = 'fie +' के बीच क्या अंतर है? – danielrvt

11

mouad के जवाब के अलावा, मैं एक अलग चुनने का सुझाव दे सकते * related_name *: मार्क जॉन इस प्रकार है, तो मार्क जॉन में से एक है अनुयायियों, है ना?

+0

+1 आप सही दोस्त कह रहे हैं। –