2015-04-05 7 views
6

हमें मैं सामाजिक नेटवर्क पदों, उपयोगकर्ताओं के लिए एक मॉडल है और पसंद करती है मान लीजिए:Django समग्र अद्वितीय

class Post(models.Model): 
    submitter = models.ForeignKey(User, null=False, default=None) 
    content = models.CharField() 
    date = models.DateField() 

    with_likes = PostLikeCountManager() 
    objects = models.Manager() 

class Like(models.Model): 
    user = models.ForeignKey(User) 
    post = models.ForeignKey(Post) 
    time = models.DateTimeField(auto_now_add=True) 

यह एक Facebook पद प्रतिनिधित्व के रूप में Post मॉडल के बारे में सोच के लिए मददगार होगा। अब, मैं प्रति उपयोगकर्ता प्रति पोस्ट की तरह एक को सीमित करना चाहता हूं। मैं इसे कैसे प्राप्त करूं? एक तरीका वर्ग के गुणों पर एक समग्र प्राथमिक कुंजी (user, post) बनाना होगा। मुझे नहीं पता कि Django में इसे कैसे प्राप्त किया जाए। दूसरा एक साथ दो विशेषताओं पर unique=True का उपयोग करना होगा। क्या यह संभव है?

धन्यवाद।

उत्तर

9

हाँ, unique_together का उपयोग करें:

class Like(models.Model): 
    user = models.ForeignKey(User) 
    post = models.ForeignKey(Post) 
    time = models.DateTimeField(auto_now_add=True) 

    class Meta: 
     unique_together = ('user', 'post') 
संबंधित मुद्दे