2012-10-17 2 views
0

방법 나는 self.changed_data에 접근하고 나는 같은 것을 할 싶습니다() : 키가 발견되는 경우 staff.profile.user 키/값 쌍으로 changes_moderated_dict을 업데이트모델의 __dict__ 내부에서 외래 키 속성을 확인 하시겠습니까? 저장 내 ModelForm 년대

changes_moderated_dict.update(dict(
    [(i, staff.profile.user.__dict__[i]) 
    for i in changed_data 
    if i in staff.profile.user.__dict__])) 

을 changed_data. changes_moderated_dict는 기본적으로이 특정 모델에 대한 모든 필드 변경 사항을 양식에 저장하는 데 사용됩니다 (이후 처리 및 직렬화 용).

staff.profile.user가 외래 키 관계가 아니고 파일 이름에 _id 접미사가 있고 속성 이름 인 self.changed_data 필드 이름과 일치하지 않는 한이 방법은 정상적으로 작동합니다 (_id없이) 모델에 나타납니다.

모델의 __dict__ 내부의 외래 키 특성을 실제 이름으로 해석하여 위의 방법이 여전히 작동하는 방법이 있습니까?

답변

1

나는 user.__dict__에 액세스하는 목표는 무엇인지 모르겠지만, 모델 필드를 확인하는 것입니다 경우는 다음과 같이 수행 할 수 있습니다

u = staff.profile.user 
model_field_names = map(lambda f:f.name, u._meta.fields) 
changes_moderated_dict.update(dict(
    [(i, getattr(u, i, None)) 
    for i in changed_data 
    if i in model_field_names])) 
+0

덕분에이 작품을. – mzu

관련 문제