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

Store のすべてのインスタンス (行ごとに 1 つ) から選択肢を作成する MultipleChoiceField を、申請者モデルに追加したいと思います (と思います)。これまでのところ、申請者クラスでこれを試しました:

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

しかし、私が望んでいたように、(私が知る限り) Store のインスタンスを取得できませんでした。ここに私が持っているいくつかの質問があります:

  • そのような別のモデルを参照することさえ可能ですか?
  • Applicant モデルから 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 に答える