Django 모델에서 외래 키 필드를 선택적으로 만들 수 있습니까?


110

이 코드가 있습니다

subject      = models.ForeignKey(subjects)
location     = models.ForeignKey(location)
publisher    =  models.ForeignKey(publisher)

내가 책의 세 가지 가치를 항상 가질 수있는 것은 아닙니다. 제목이나 위치, 출판사를 모르는 경우도 있습니다. 그럼 난 비워두고 싶어

그러나 내가 가지고 있다면 선택 상자가 필요합니다. 그렇게 가능합니까?

답변:


195

물론 blank=True, null=True입니다. 다음과 같이 선택 사항으로 유지하려는 각 입력란에 추가 하세요.

subject = models.ForeignKey(subjects, blank=True, null=True)

6
둘 다 필요합니까? null = True 사용의 단점은 무엇입니까?
Ward

12
@WardC 일반적으로 양식에서 필드를 공백으로 허용하려는 경우 해당 필드에 대해 NULL 값을 허용하는 데이터베이스도 필요하기 때문에 두 가지 조합이 너무 자주 발생합니다. 예외는 CharFields 및 TextFields이며 Django에서는 NULL로 저장되지 않습니다. 빈 값은 DB에 빈 문자열 ( '')로 저장됩니다.
fang_dejavu

8
@Ward, 둘 다 필요하지 않습니다. 을 사용하는 것으로 충분합니다 null=True.
Jam Risser

8
blank=True양식 유효성 검사에 중요합니다. 이 필드에 사용자 입력으로 빈 문자열을 허용합니다. 데이터베이스 열에 NULL 값을 null=True허용 합니다 .
cezar

1
@cezar 코멘트가 내 생명을 구했습니다! 감사합니다
po5i
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.