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

السؤال

نشر

لدي نموذج 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
نشر

يمكنك إضافة تابع 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}'

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

  • 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() 

 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...