2017-03-18 1 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

을 보여주십시오 – Julien

+0

@Julien 끝났습니다! :) –

답변

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) 

파이썬 3 사용하는 경우, 다음 마지막 줄은 그냥 :

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

답변을 수락 주셔서 감사합니다, 당신은이 유용한 발견 한 경우 upvote도 주셔서 감사합니다 :) – Julien

+0

미안하지만 upvote 수 없습니다. 내 점수가 순간적으로 너무 낮습니다 –

+0

물론입니다. 도움이 되었으면 다행 :) – Julien