2014-07-23 2 views
1

모델의 모든 인스턴스에 공통적 인 장고 모델 속성을 어떻게 처리해야합니까?django 모델의 모델 일반 속성은 어떻게해야합니까?

class Office(models.Model): 
    room = models.CharField(max_length=3) 
    phone = models.CharField(max_length=8) 
    city = models.CharField(max_length=20) 

하지만 내가 있다면 : 나는 각 사무실 방 번호와 전화 번호를 가지고 사무실의 장고 모델을했고, 특정 도시에 있었다 예를 들어, 나는 이런 식으로 뭔가를 할 수 정의에 따라 모델의 모든 인스턴스가 동일한 사무실에있는 사무실의 장고 모델을 정의합니까? 나는 이런 식으로 뭔가 할 수있는 :

class LondonOffice(models.Model): 
    room = models.CharField(max_length=3) 
    phone = models.CharField(max_length=8) 
    city = models.CharField(default='London', max_length=20) 

을하지만 경우, city 필드가 불필요하고 데이터베이스에 불필요한 열을 생성합니다. 이 같은 것을하는 것이 더 좋을까요

class LondonOffice(models.Model): 
    room = models.CharField(max_length=3) 
    phone = models.CharField(max_length=8) 
    city = 'London' 

그래서 두 개의 열만있는 데이터베이스 테이블을 만드시겠습니까?

이 간단한 예제에서 여분의 db 열은 실제 문제가되지 않습니다. 그러나, 내가 생각하고있는 실제 예에서는이 모델 전체의 속성이 더 많을 것이고 각각에 대해 불필요한 열을 만드는 것은 낭비처럼 보일 것입니다. 도시의 목록은 정적 및 사전 정의 된 경우

class City(models.Model): 
    name = models.CharField(max_length=20) 


class Office(models.Model): 
    room = models.CharField(max_length=3) 
    phone = models.CharField(max_length=8) 
    city = models.ForeignKey(City) 

또는, 당신은 choices를 사용할 수 있습니다 : 나는 Office에서에 ForeignKey을 별도의 모델로 city를 이동 만들 것

답변

1

CITIES = (
    (0, 'London'), 
    (1, 'New York'), 
    (2, 'Moscow'), 
) 

class Office(models.Model): 
    room = models.CharField(max_length=3) 
    phone = models.CharField(max_length=8) 
    city = models.CharField(choices=CITIES) 
+0

간단합니다. – Azar