2014-01-10 11 views
0

다음 모델 클래스가 있습니다.UserProfile에서 특정 사용자를 얻는 방법

내 "사용자"앱의 사용자 프로필 모델은 다음과 같습니다. Django (django.contrib.auth) User app 용 ProfileModel입니다.

from django.db import models 
from django.contrib.auth.models import User 
from apps.programs.models import Program 

class UserProfile(models.Model): 
    user = models.ForeignKey(User, primary_key=True) 
    USER_TYPES = (
     ('STUD', 'Students'), 
     ('INST', 'Instructors'), 
     ('ADV', 'Advisers'), 
     ('BRAN', 'Branch Workers') 
    ) 
    status = models.CharField(max_length=4, choices=USER_TYPES) 
    program = models.ForeignKey(Program) 
    phone_number = models.CharField(max_length=25, blank=True) 

    def __unicode__(self): 
     return u'%s %s %s' % (self.user, self.status, self.program) 

여기 내 "코스"앱의 내 코스 모델입니다.

from django.db import models 
from apps.programs.models import Program 
from apps.users.models import UserProfile 


class Course(models.Model): 
    code = models.CharField(max_length=6, primary_key=True) 
    id = models.PositiveIntegerField() 
    name = models.CharField(max_length=60) 
    course_language = models.CharField(max_length=3) 
    credit = models.DecimalField(max_digits=10, decimal_places=1) 
    schedule = models.CharField(max_length=30, blank=True) 
    program = models.ForeignKey(Program) 
    SEMESTER = (
     ('f', 'Fall Semester'), 
     ('s', 'Spring Semester'), 
     ('b', 'Both Semesters')) 
    semester = models.CharField(max_length=1, choices=SEMESTER, blank=True) 
    description = models.TextField(blank=True) 

    def __unicode__(self): 
     return self.name 

그리고 여기에 내가 어떤 강사에 의해 납이 함유 된 일부 과목을 저장하는거야 내 "과정"앱 내 InstructorCourse 모델입니다. "코스"필드는 코스 모델 및 "강사"와 UserProfile 모델로 연결됩니다. 여기에 문제가 있습니다.

class InstructorCourse(models.Model): 
    course = models.ForeignKey(Course, name='course_name') 
    instructor = models.ForeignKey(UserProfile, name='instructor_username') 

    def __unicode__(self): 
     return u"%s %s" % (self.course_name, self.instructor_name) 

문제는 내가 관리자에 강사를 추가하려고하면 강사 필드는 사용자 프로필을 받아 모든 사용자를 얻을 수 있기 때문에, 나는, 시스템의 모든 사용자를 얻을 수 있다는 것입니다. 그러나 그것은 내가 원하는 것이 아닙니다. UserProfile 모델에서 'status'필드의 'INST'값만 가진 사용자가 필요합니다. 누군가가 저를 도울 수 있습니까? InstructorCourse 모델 관리자를 직접 만들어야하나요? 또는 무엇을해야합니까?

답변

0

제대로 이해하고 있다면 InstructorCourse 모델의 강사 설정 옵션을 제한하고 싶습니다.

InstructorCourse 모델에 limit_choices_to={'status': 'INST'}과 같은 것을 추가하면됩니다.

take a look at limit_choices_to from the django docs.

class InstructorCourse(models.Model): 
    course = models.ForeignKey(Course, name='course_name') 
    instructor = models.ForeignKey(UserProfile, name='instructor_username', limit_choices_to={'status': 'INST'}) 

    def __unicode__(self): 
     return u"%s %s" % (self.course_name, self.instructor_name) 
관련 문제