我有以下模型类。
这是我的“用户”应用的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并获取所有用户。但这不是我想要的。我只需要用户使用UserProfile模型的'status'字段的'INST'值。愿有人帮帮我吗?我应该为InstructorCourse模型创建自己的Manager吗?或者我该怎么办?
答案 0 :(得分:0)
如果我理解正确,您希望限制在InstructorCourse
模型上设置讲师的选项。
我认为您可以通过在limit_choices_to={'status': 'INST'}
模型中添加InstructorCourse
等内容来实现此目的。
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)