اذهب إلى المحتوى

السؤال

نشر

لدي نموذج Model بالشكل التالي:

class Clients(models.Model):
    first_name = models.CharField(max_length=199)
    last_name = models.CharField(max_length=199)

كيف يمكنني إضافة حقل آخر تكون قيمته دائمًا عبارة عن مجموع الحقلين Full_name على سبيل المثال؟ بحيث يمكنني إستخدام الخاصية full_name للحصول على اسم العميل الكامل مباشرة

Recommended Posts

  • 1
نشر

الطريقة الأولى و هي إرجاع القيمة في دالة :

class Profile(models.Model):
    user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=200, blank=True, null=True)
    last_name = models.CharField(max_length=200, blank=True, null=True)
    

    def __str__(self): # الدالة تقوم بإرجع الاسم كامل وسيظهر كامل في لوحة التحكم
        name = str(self.first_name)
        if self.last_name:
            name += ' ' + str(self.last_name)
        return name

أو عنطرق حفظها في حقل جديد:
وسيقوم بحفظها بشكل ألى

class User( models.Model ):
    first_name = models.CharField( max_length=64 )
    last_name = models.CharField( max_length=64 )
    full_name = models.CharField( max_length=128 )
    
    def save( self, *args, **kw ): # بهذه الدالة
        self.full_name = '{0} {1}'.format( first_name, last_name )
        super( User, self ).save( *args, **kw )


 

  • 1
نشر

إذا كنت تريد حفظ الحقل full_name  في قاعدة البيانات وهو يجمع ال first_name مع last_name يُمكنك القيام بذلك فقط بإضافة حقل  full_name في الModel Clients عند تعبئة البيانات يكون فارغ ومن ثم في دالة ال ()save عند حفظ الكائن سوف يتم تخزين قيمة ال first_name و last_name  داخل ال full_name بشكل تلقائي ليتم ذلك هكذا سوف يكون الكود الخاص بك:

class Clients(models.Model):
    first_name = models.CharField(max_length=199)
    last_name = models.CharField(max_length=199)
    full_name = models.CharField(max_length=199, blank=True)
 
    def save(self):
        self.full_name  = self.first_name +' '+ self.last_name 
        return super(Clients, self).save() 

 

  • 1
نشر

يمكنك إضافة تابع method باسم full_name وإضافة المزخرف property@ حتى يمكن إستخدامه كخاصية عادية:

class Clients(models.Model):
    first_name = models.CharField(max_length=199)
    last_name = models.CharField(max_length=199)

    @property
    def full_name(self):
      return f'{self.first_name} {self.last_name}'

كما ترى، يُعيد هذا التابع الاسم الأول والاسم الأخير بسهولة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...