value() 객체는 나타낼 수 있는 가장 작은 값을 표현할 수 있습니다. 예를 들어 쿼리에서 integer나 boolean 또는 string을 표현하고자 할 때 Value()로 감싸서 나타낼 수 있습니다.
사실상 Value()를 직접 사용하지 않습니다.
output_field는 integerField()나 BooleanField()와 같은 장고 모델에서 제공하는 인스턴스를 작성해야하고 장고는 데이터베이스에서 값을 가져온 후 값을 로드합니다. 일반적으로 데이터 유효성 검사와 관련된 argument(max_length, max_digits 등)가 표현식의 출력 밧에 적용되지 않으므로 모델 필드를 인스턴스화 할 때는 arguments가 필요하지 않습니다.
F() 객체는 모델 필드의 값을 나타냅니다. 데이터베이스에서 파이썬 메모리로 데이터를 가져 오지 않고 모델 필드 값을 참조하고 사용하여 데이터베이스 작업을 수행 할 수 있습니다. 대신 장고는 F() 객체를 사용하여 데이터베이스 수준에서 필요한 작업을 설명하는 sql 표현식을 생성합니다.
위 파이썬 구문은 reporter.stories_field의 값을 데이터베이스에서 메모리로 가져와 파이썬 연산자를 사용하여 조작 한 다음 데이터베이스에 다시 저장했습니다.
reporter.stories_filed = F('stories_filed) + 1은 값을 인스턴스 속성에 할당 한 것처럼 보이지만 데이터베이스에 대한 연산을 설명하는 sql 구문입니다. 장고는 F()의 인스턴스를 만나면 파이썬 연산자를 오버라이드하여 캡슐화된 sql 표현식을 생성합니다. 이 경우 reporter.stories_field가 나타내는 데이터베이스 필드를 증가 시키도록 데이터베이스에 지시합니다. reporter.stories_filed나 다른 어떠한 값이 있어도 데이터베이스에 처리되기 때문에 파이썬은 알지 못합니다.