2013-01-02 2 views
0

다른 모델의 최신 관련을 반환하는 모델 필드를 갖고 싶습니다.보기와 같은 django 모델 필드

는이

class Thing(models.Model): 
    name = models.CharField(max_length=200) 
    state = models.ForeignKey(State, query=latest) #pure fantasy 
class State(models.Model): 
    change = models.DateTimeField(auto_now_add=True) 
    thing = models.ForeignKey(Thing) 

모델 수준의 국가는 것에 많은 것과 관계가 있다고 가정 예 -.

given- some_thing = Thing.object.all() [0]

내가 some_thing.state 난에있는 인스턴스 것에 대한 가장 최근의 State.change 값이 국가의 인스턴스가되고 싶어요 손.

장고 모델 수준에서 앞서 설명한 작업을 수행하는 인스턴스 변수를 지정하고 싶습니다. 나는이 두 가지 방법을 생각할 수 있지만, 어느 쪽이 수준에있다 :

  1. 실제 DB 수준에서 - 뷰를 생성하고 동기화 장고 DB 을 해제 (http://stackoverflow.com/ 질문/507795/can-i-use-a-model-in-django)
  2. 뷰 수준 - 새 상태 행을 수동으로 만들면 해당 행이 관련 Thing.state 예.
+0

사용자 지정 모델 메서드를 구현하는 것이 제 3의 선택이 될 수 있습니까? – ppetrid

답변

0

데이터베이스 레벨 동적 외부 키를 가질 수 없습니다. 그러나 사용자의 항목을 캡처하는 속성이나 메서드가있을 수 있습니다.

class Thing(models.Model): 
    name = models.CharField(max_length=200) 

    @property 
    def state(self): 
     return State.objects.latest('change') 

class State(models.Model): 
    change = models.DateTimeField(auto_now_add=True) 
    thing = models.ForeignKey(Thing)