제 모델에는 Concert
클래스와 Venue
클래스가 있습니다. 각 공연장에는 여러 개의 콘서트가 있습니다. 나는 장소 개체의 기본 키를 포함 ... 간단한왜 모델입니까 .ForeignKey가 유리합니까?
venue = models.IntegerField(max_length = 10)
와 장소에 콘서트 클래스를 연결하고있다. 동료가 대신 venue = models.ForeignKey(Venue)
을 사용할 것을 제안했습니다. 이것도 작동하는 동안, 내가 자리를 위해 모든 콘서트를 구문 분석 할 수 있었기 때문에 Concert.objects.filter(venue=4)
의 Concert.objects.filter(venue=4)
에서 ID 번호 ForeignKey
: Venue_instance.Concert_set.all()
과 같은 방식으로 사용할 수 있습니다. 내 방법을 사용하는 데 전혀 문제가 없었습니다.
IntegerField
과 objects.filter()
을 사용하는 방식은 ForeignKey
과 마찬가지로 "ManyToOne"관계의 많은 부분을 차지하므로 잘못된 위치를 알고 싶습니다. ForeignKeys
은 왜 유리한가요? 그들은 더 빠릅니까? 더 나은 데이터베이스 디자인입니까? 클리너 코드?
나는 무결성과 관련이 있다고 생각한다. 'venue'를'Venue' 테이블에없는 값으로 설정할 수 있습니까? 하나 또는 다른 디자인을 사용하여 해당 테이블의 키를 업데이트하거나 삭제하면 어떻게됩니까? –
그게 뭔가 고려해야 할 것 같네요. 이것이 당신이 생각할 수있는 유일한 문제입니까? 그것은 나를 걱정하는 것이 아닙니다. –
그냥 전환하십시오. 우선, 현재 접근 방식을 사용하여 기본 키 구성표를 실수로 변경 한 경우 사용자가 실수를 저 지르게됩니다. – Marcin