2013-05-10 26 views
1

我正在爲具有多個位置的公司創建在線工作申請。我希望允許申請人能夠選擇代表他們想申請的每個商店的複選框(可以是多個)。我很猶豫,爲實現可擴展性硬編碼這些,所以我一直希望打造2款(我有不止於此,但在這個例子中,這些是僅有的2是相關):使用其他模型的行創建MultipleChoiceField,

申請人

class Applicant(models.Model): 
    name = models.CharField(max_length=200) 
    city = models.CharField(max_length=200) 
    state = models.CharField(max_length=200) 
    zip = models.CharField(max_length=200) 
    social_security_number = models.CharField(max_length=200) 
    phone = models.CharField(max_length=200) 
    alt_phone = models.CharField(max_length=200, blank=True) 
    us_citizen = models.BooleanField() 
    committed_felony = models.BooleanField() 
    is_16 = models.BooleanField() 
    has_drivers_license = models.BooleanField() 
    is_disabled = models.BooleanField() 
    prev_employed = models.BooleanField() 
    felony_explanation = models.TextField(blank=True) 
    disabled_explanation = models.TextField(blank=True) 
    prev_employment_manager = models.CharField(max_length=200, blank=True) 
    prev_employment_year = models.CharField(max_length=4, blank=True) 
    skills = models.TextField() 
    was_completed = models.BooleanField(default=False) 

    def __unicode__(self): 
     return self.name 

商店

class Store(models.Model): 
    code = models.CharField(max_length=10) 
    description = models.CharField(max_length=200) 
    city = models.CharField(max_length=20) 
    state = models.CharField(max_length=20) 

    def __unicode__(self): 
     return self.description 

我想(我認爲)想從所有商店的實例添加MultipleChoiceField在申請人的模型,創建選擇(上e每行)。 (據我可以告訴)搶商店的情況下,就像我曾希望

def get_stores(): 
     self.stores = Store.objects.all() 

但未能:到目前爲止,我已經在申請人類嘗試這樣做。這裏有幾個問題我有:

  • 是否有可能引用另一個模型呢?
  • 引用申請人模型中的商店模型創建幾個複選框以讓申請人選擇他們正在申請的所有商店(並允許列表動態更改)的正確開始?
  • 是一個MultipleSelectField最好的方法來做到這一點,我拉了所有的商店實例?

回答

1

這看起來像ManyToManyField的規範用例。

class Store(models.Model): 
    ... 

class Applicant(models.Model): 
    name = models.CharField(max_length=200) 
    ... 
    was_completed = models.BooleanField(default=False) 

    stores = ManyToManyField(Store, related_name='applicants') 

當您在一個字段中顯示這種形式,它會自動使用MultipleSelectField

REF:https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/

+0

工作就像一個魅力 - 文檔是黑白的,我只是從來沒有發現這一節。 – drewwyatt 2013-05-10 05:12:09

相關問題