2014-01-10 49 views
0

我有以下模型類。如何從UserProfile獲取特定用戶

這裏是我的「用戶」應用程序的UserProfile模型。它是Django(django.contrib.auth)用戶應用程序的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模型的'狀態'字段的'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)