2013-05-10 87 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

相关问题