2017-03-18 7 views
0

対象のフィールドでは、クラス内に関数を作成したいと思います。フィールドincome_sourceEmployedと異なる場合は、そのフィールドを除くすべてのフィールドが空になります。私のクラスの各フィールドを空にするように頼むことができますか?クラスの空のフィールド

ありがとうございます!

@python_2_unicode_compatible 
class EmployerProfile(AbstractAddress): 
    income_source = models.CharField(_('Income source'), max_length=20, 
           choices=settings.LOANWOLF_INCOME_SOURCE_CHOICES, 
           default='employed') 


    company_name = models.CharField(_('Company name'), 
            max_length=50, blank=True, null=True) 
    phone = PhoneField(_('Phone'), max_length=50, blank=True, null=True) 
    phone_extension = models.CharField(_('Extension'), max_length=10, 
             blank=True, null=True) 
    job_title = models.CharField(_('Job title'), max_length=50, blank=True, 
           null=True) 
    date_hired = models.DateField(_('Date hired'), blank=True, null=True) 
    supervisor_name = models.CharField(_('Supervisor name'), max_length=50, 
             blank=True, null=True) 
    has_missing_fields = models.BooleanField(_('Has missing informations'), 
              default=True) 
    manual_validation = GenericRelation(ManualFieldValidation) 
+0

これはテストされていないですが、私は、これはあなたのためにどのように動作するかを知ってみましょう:

def save(self, *args, **kwargs): if self.company_name != "employed": to_empty = [ "company_name", "phone", "phone_extension", "job_title", "date_hired", "supervisor_name", ] for field_name in to_empty: setattr(self, field_name, None) super(EmployerProfile, self).save(*args, **kwargs) 

あなたは、Python 3を使用している場合は、最後の行だけですクラス – Julien

+0

@Julienそれは終わった! :) –

答えて

0

フィールドに応じてこれらをクリアする場合は、モデルインスタンスを保存する前にこれを行うのが最善です。さらに、すべてのフィールドをクリアしたくない場合は、クリアするフィールドを明示することをお勧めします。ご提示ください

super().save(*args, **kwargs) 
+0

答えを受け入れてくれてありがとう、私はupvoteあまりにもあなたがこの便利なを発見していただければ幸いです:) – Julien

+0

申し訳ありませんが、私はupvoteすることはできません。私の得点はあまりにも低いです –

+0

もちろん、当然です。私が助けてくれてうれしいです:) – Julien