2011-04-19 61 views
1

我正在尝试用Django创建一个工作申请表。Django:ManyToManyField附加列

基本上,我创建了两个模型。

  • softwareskill_model
  • application_model

管理员可以登录到管理截面,并添加新的softwareskill- 条目的数据库。该application_model引用那些 softwareskill条目/使用多对多场记录:

class softwareskill_model(django.db.models.Model): 
    name = django.db.models.CharField(max_length=200) 

class application_model(django.db.models.Model): 
    # ... 
    softwareskills = django.db.models.ManyToManyField(softwareskill_model) 

所以,如果有人想申请工作,他可以​​选择他使用这 软件程序包。

现在我希望申请人对他选择的每个软件技能 进行1-6的评分。你是怎样做的?

我正在使用SQLite3数据库,并发现ManyToManyField 创建一个新的表来存储关系。在我的情况下,它看起来像 这样:

| ID | application_model_id | softwareskill_model_id | 

我的假设是简单地增加一个新列,所以它看起来是这样的:

| ID | application_model_id | softwareskill_model_id | Rating | 

这有可能/最好的方式做到这一点?怎么样?

我对Django,数据库和网页开发一般都很陌生,希望你能帮助我:-)!

谢谢 亨利

回答

2

through是你需要使用,例如什么

class softwareskill_model(django.db.models.Model): 
    name = django.db.models.CharField(max_length=200) 

class application_model(django.db.models.Model): 
    # ... 
    softwareskills = django.db.models.ManyToManyField(softwareskill_model, through="ApplicationSoftwareSkill") 

class ApplicationSoftwareSkill(models.Model): 
    softwareskill = models.ForeignKey(softwareskill_model) 
    application = models.ForeignKey(application_model) 
    # extra fields here e.g. 
    rating = models.IntegerField() 
+0

很好,工作,非常感谢! – henry 2011-04-19 16:43:46