나는 다음과 같은 기능을 가지고 :어떻게 문자열을 인수 이름으로 전달합니까?
def create_act(user, verb, fk_name=None, fk_value=None):
fk = getattr(Action, fk_name)
action = Action(user=user, verb=verb, fk=fk_value)
action.save()
액션 클래스입니다. 클래스에는 여러 속성이 있으며 처음에는 어떤 속성이 값을 얻을지 모르겠습니다.
나는 동적 인 속성 이름을 얻습니다.
나는 kwarg fk
을 클래스 동작의 실제 속성으로하고 싶습니다. FK는 계정 또는 회사 일 수 있습니다.
class Action(models.Model):
account = models.ForeignKey(Account, blank=True, null=True, related_name='activity', on_delete=models.CASCADE)
company = models.ForeignKey(Company, blank=True, null=True, related_name='activity', on_delete=models.CASCADE)
나는 나에게 포럼에 대한 몇 가지 대답하지만 관련 아무것도 발견, 또는 파이썬한다. 다른 사이트에서 eval을 사용하라는 제안을 보았지만 eval은 안전하지 않습니다.
유용한 링크입니다 : https://stackoverflow.com/questions/3394835/args-and-kwargs –
당신은 몇 가지 예를 준 경우가 도움이 될 것입니다 * 값 속성과 사전 풀기를 사용하여 그것을 따라 통과 * 및 어떤 종류의 호출을 에뮬레이션 할 것인지 예를 들어보십시오. 'Action (.., fk = ...) '에서'fk'는'fk' 변수에 기반한 변수 값이어야한다고 말하고 싶습니까? '액션 (..., foo = fk_value)'? – deceze
@deceze 더 많은 정보가 추가되었습니다. django는 인스턴스를 만들고 fk는 외래 키입니다 – user3541631