2009-03-11 2 views
2

나는 2 개의 모델이 있습니다. JobRecord에는 많은 Activity (ies)가 있으며, 물론 Activity 모델에 배치됩니다. 장고 모델 - FK는 마지막으로 입력 한 레코드로 기본 설정됩니다 (로그인 한 사용자가)

데이터 입력을 돕기 위해, 나는에 새로운 활동 내에서, JobRecord에 FK를 기본 싶습니다 '로그인 한 사용자에 의해, 마지막으로 입력 활동의 JobRecord의 FK (보너스 포인트!)'

모델명 :

class Activity(models.Model): 
    """ 
    Record multiple activities against a JobRecord 
    """ 

    start    = models.TimeField(blank=True, null=True) 
    end     = models.TimeField(blank=True, null=True) 
    job_record   = models.ForeignKey(JobRecord) # editable=False) 
    task    = models.ForeignKey(Task, blank=True, null=True) # show only tasks found in project 
    flora    = models.ManyToManyField(Species, blank=True, null=True, help_text='Optional subject flora.') 

    memo    = models.TextField(blank=True, null=True) 

    all_operators  = models.BooleanField(help_text="Check to include all operators from the parent job record") 
    operators   = models.ManyToManyField(User, null=True, blank=True) 

    duration   = models.DecimalField(blank=True, null=True, max_digits=7, decimal_places=2) 

    class Meta: 
     #order_with_respect_to = 'job_record' # not working? 
     ordering = ['-job_record__date', 'job_record', 'start'] 

고마워요!

답변

1

첫 번째 단계로 일부 모델에 각 사용자의 마지막 활동을 저장해야합니다.

class ActivityLog(models.Model) 
    user = models.ForeignKey(User) 
    job_record = models.ForeignKey(JobRecord) 

그런 다음보기에서, 당신은 몇 가지 간단한 쿼리 활동을 검색 할 수 있습니다

last_activity_data = ActivityLog.objects.filter(user=request.user) 

과 모델의 양식을 초기화에서 사용 : 마지막으로

form = ActivityForm(job_record=last_activity_data.job_record) 

기억 활동을 저장할 때 로그를 업데이트합니다.

참고 : 모든 오류 검사를 생략했습니다. 예를 들어, last_job_record이없는 경우를 처리해야하지만 매우 사소해야합니다.

마지막으로 Activity에 ManyToManyField를 사용하고 Django의 API를 사용할 수도 있습니다. 그것은 완벽하게 동일 할 것입니다 (예를 들어, 장면 뒤에서이 테이블과 매우 유사한 테이블을 생성 할 것입니다).하지만 의미가 약간 다를 것이고 이런 이유 때문에 명시적인 해결책을 선호 할 것입니다.

관련 문제