1

我正在为一家拥有多个地点的公司创建在线工作申请。我想让申请人能够选择代表他们想要申请的每家商店的复选框(可能是多个)。出于可扩展性的目的,我不愿对这些进行硬编码,所以我希望创建 2 个模型(我有更多模型,但对于这个示例,这些是唯一相关的 2 个):

申请人

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,它从 Store 的所有实例中创建选择(每行一个)。到目前为止,我已经在申请者类中尝试过这个:

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

但无法(据我所知)像我希望的那样抓取 Store 的实例。以下是我的几个问题:

  • 甚至可以引用另一个这样的模型吗?
  • 从申请人模型中引用商店模型是否是创建多个复选框以让申请人选择他们正在申请的所有商店(并允许列表动态更改)的正确开始?
  • 拉出所有 Store 实例后,MultipleSelectField 是最好的方法吗?
4

1 回答 1

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

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

于 2013-05-10T05:07:30.907 回答