मेरे पास एक छोटा सा एप्लिकेशन है जो उपयोगकर्ता को वीडियो रेट करने की अनुमति देता है।Django - डुप्लिकेट कुंजी पर सहेजें() अद्यतन
उपयोगकर्ता केवल एक बार रेट कर सकते हैं। इसलिए मैंने मॉडल पर विशिष्टता परिभाषित की है।
लेकिन वह अपनी दर बदल सकता है। तो save()
नकली चाबी
class VideoRate(models.Model):
"""Users can Rate each Video on the criterias defined for the topic"""
user = models.ForeignKey(User)
video = models.ForeignKey(VideoFile)
crit = models.ForeignKey(VideoCrit)
rate = models.DecimalField(max_digits=2, decimal_places=1, choices=RATE_CHOICES)
class Meta:
unique_together = (('user', 'video', 'crit'),)
verbose_name = 'Video Rating'
पर अद्यतन करना चाहिए अगर मैं
rate = VideoRate(user_id=1, video_id=1, crit_id=1, rate=2)
rate.save()
यह रेटिंग बचत है, लेकिन अगर मैं
rate = VideoRate(user_id=1, video_id=1, crit_id=1, rate=3)
rate.save()
मैं सामान्य त्रुटि मिलती है
IntegrityError: (1062, "Duplicate entry '1-1-1' for key 'user_id'")
भले ही मैं force_update=True
(केवल प्राथमिक कुंजी पर आधारित) का उपयोग करता हूं
क्या रेटिंग अपडेट करने का कोई तरीका है यदि यह पहले से डेटा जांचने के बिना मौजूद है?
+1: पहला विकल्प 2 या 3 प्रश्न करेगा, जबकि दूसरा करेगा 1. – sdolan
खराब नहीं लगता है। आपका मतलब है कि Django एक 'INSERT नहीं कर सकता ... डिप्लिकेट कुंजी अपडेट पर ...'? –
नहीं, क्योंकि यह एक MySQL- विशिष्ट एक्सटेंशन है, और Django डेटाबेस की एक श्रृंखला के साथ काम करता है। –