【发布时间】:2015-11-29 10:52:35
【问题描述】:
我有一个项目模型。该项目包含人员(从事该项目的人员)。我也在尝试为每个项目人员制作一个模型,包括他们对项目的任何注释和项目完成百分比。
我的问题是我想将individual_person_in_project 过滤到仅对应项目中的人员。我正在尝试使用
limit_choices_to = {'person_in_project':User}
我想将我的选择限制在我的Project 模型中的用户。
class Project(models.Model):
project_name = models.CharField(max_length = 120,null = False,blank = False)
project_percent_complete = models.IntegerField(blank = True,null = True, default = 0)
person_in_project = models.ManyToManyField(User,related_name = 'project_person',blank = True)
project_description = models.CharField(max_length = 300,null = True,blank = True)
class Project_Person(models.Model):
corresponding_project = models.ForeignKey(Project,related_name = 'corresponding_project_this_user_is_in',null = False)
individual_person_in_project = models.ForeignKey(User, related_name = 'a_person_within_the_corresponding_project', limit_choices_to = {'person_in_project':User})
percent_complete = models.IntegerField(default = 0)
【问题讨论】:
-
你是在用表单创建对象吗?
-
我没有在表单中做任何事情。
-
看来你的设计最好去掉
Project模型的person_in_project字段,让链接一个人到一个项目的Project_Person对象的存在成为一个记录项目中的人。一方面,您的数据会更加规范化,甚至可能更具吸引力,上述问题就会消失,因为ProjectPerson不必跟踪person_in_project。 -
另外,顺便说一下,Python 中的类以及 Django 中的模型类的标准约定不是使用下划线,而是使用 CamelCase——所以
Project_Person将是ProjectPerson.
标签: django model foreign-keys limit-choices-to