2011-11-25 11 views
0

링크 또는 장고에 개체를 상속하는 방법에 대한 자습서가 있습니까? 우리는 그것이 부모를위한 차량을 가지고 있다고 말하며, 자동차는 트럭이고 어린이는 트럭을 가지고있다.django에서 객체를 상속하는 방법은 무엇입니까?

가능한 경우 models.py? 어떻게 작동합니까?

덕분에 ...

답변

4

똑같은

class Vehicle(Model): 
    name = models.TextField() 

class Car(Vehicle): 
    passengers = PositiveIntegerField() 

class Truck(Vehicle): 
    tonnage = FloatField() 

>>> Car.objects.create(name='Beetle', passengers = 5) 
<Car: name="Beetle",passengers=5> 
>>> Truck.objects.create(name='Mack', tonnage=4.5) 
<Truck: name="Mack,tonnage=4.5> 
>>> Vehicle.objects.all() 
[<Vehicle: name="Beetle">,<Vehicle: name="Mack>] 
>>> v = Vehicle.objects.get(name='Beetle') 
>>> (bool(v.car), bool(v.truck)) 
(True, False) 
>>> v.car 
<Car: name="Beetle",passengers=5> 
>>> v.truck 
None 

https://docs.djangoproject.com/en/dev/topics/db/models/#model-inheritance

+0

안녕하세요. Thomas. 모든 차량을 선택하는 방법과 내가 차량을 가지고있을 때 차량 (또는 트럭, 오토바이)인지 알 수있는 방법을 설명 할 수 있습니까? 감사. – danihp

+0

몇 가지 추가 정보를 추가했습니다. 이 일이 끝나기를 바란다. – Thomas

+0

좋은 +1 감사합니다. – danihp

0

장고는 파이썬, 일반 파이썬 상속 작품을 사용하기 때문에. 상속 모델에 대한 더 자세한 정보는 모델에 관한 장고 문서, 특히 Model inheritance에 관한 섹션을 참조하십시오. 파이썬 상속 등

1

그것은 장고 상속 방법 중 몇 가지를 지원하지만, 그들 중 누구도 즉, 다형성 방식으로 행동 없다는 것을 주목할 필요가, 당신의 깡통 ' 추상 기본 클래스를 사용하는 경우 Vehicle 모델에 대한 쿼리를 만들고 Car 인스턴스를 가져오고 Multi 테이블 상속을 사용하는 경우 기본 클래스 모델 인스턴스의 하위 클래스 동작을 사용할 수 없습니다.

someapps이 있으며 문제를 해결하기위한 스 니펫이 있지만 통합하기가 쉽지 않습니다.

관련 문제