मान लीजिए मैं इस मॉडल है:Django get_or_create, कैसे प्रतिबद्ध कहना = झूठी
class SocialGroupMembers(models.Model):
social_group = models.ForeignKey(SocialGroup, related_name="members")
profile = models.ForeignKey(Profile)
date_joined = models.DateTimeField(auto_now_add=True)
added_by = models.ForeignKey(User)
approved = models.BooleanField(default=False)
अगर मैं कार्य करें:
obj, created = SocialGroupMembers.objects.get_or_create(
social_group=social_group, profile=profile)
# this will give integrity error that added_by can not be null
मैं फ़िल्टर मापदंड में added_by
क्षेत्र शामिल करने के लिए नहीं करना चाहती। मैं बाद में added_by
फ़ील्ड को सहेजना चाहता हूं। commit=False
की तरह कुछ Django बताने के लिए है कि मैं बाद में अधिक क्षेत्रों को जोड़ने के लिए योजना है:
obj, created = SocialGroupMembers.objects.get_or_create(commit=False,
social_group=social_group, profile=profile)
if created:
obj.added_by = request.user
obj.save()
else:
#do something
मैं जानता हूँ कि वहाँ के विकल्प उदा हैं मैं ObjectDoesNotExist
का उपयोग कर सकता हूं। लेकिन क्या get_or_create
में वांछित कार्यक्षमता प्राप्त करने का कोई तरीका है?
कारण मैं added_by
फ़ील्ड को बाहर करना चाहता हूं क्योंकि ऐसा कोई अन्य उपयोगकर्ता पहले से ही एक और उपयोगकर्ता प्रोफ़ाइल जोड़ सकता है।
प्रतिबद्ध जोड़ना = get_or_create गलत पर एक अच्छा है विचार। शायद आप django-developers मेलिंग सूची पर सुझाव को फ़्लोट करना चाहेंगे। – s29