2016-09-11 21 views
0

最近、私はdjangoを研究しています。フォーム構築についてのこの問題の解決方法を見つけるためにあなたの助けが必要です。Djangoモデル:フィールドの無限グループを繰り返すフォーム

のは、私だけで構成された「活動」と呼ばれるエンティティを持っているとしましょう:

ActivityYearsがで構成され

- title: just a char field 
- ActivityYears: a couple of start-end years that can be repeated multiple times 

私のデータベースはのようになります方法です
- start year 
- end year 

activity_table 
-ID 
-title 

activity_years_table 
-year start 
-year end 
-activity ID 

フロントエンドの外観です。

Activity title 1 
2001 - 2003 
2005 - 2006 
2007 - 2010 

Activity title 2 
2011 - 2013 
2015 - 2016 

and so on 

私は、ActivityとActivityYearsはモデルですが、適切な方法でそれらを接続することはできません。アクティビティアイテムを追加すると、必要な数だけ開始日を追加できますが、どのように追加することができますか?事前

答えて

3

ありがとうあなたはおそらくForeign Key関係を持つ2つの別々のモデルを使用したいと思います。例えば:

class Activity(Model): 
    id = AutoField(editable=False, primary_key=True, unique=True) 
    title = CharField(default="Activity") 

class ActivityYear(Model): 
    id = AutoField(editable=False, primary_key=True, unique=True) 
    year_start = IntegerField(default=1900) 
    year_end = IntegerField(default=1999) 

    activity_id = ForeignKey(Activity) 

このモデルの設計では、我々は、各ActivityYearがデータベース内に有効なActivity行のidフィールドを指すメンバーactivity_idを有していたことを定義することができます。

SELECT * FROM activity_years WHERE activity_id = 1

かでジャンゴ:この情報を使用して、それぞれのActivity、オブジェクトのidメンバーを使用してデータベースからActivityYearオブジェクトを選択することができるであろうActivityYearを追加するために

activity_years = Activity.objects.filter(activity_id=1)

オブジェクトを特定のActivityオブジェクトにマップする場合は、次を使用できます。

ActivityYear.objects.create({ 
    'year_start': 1990, 
    'year_end': 1999, 
    'activity_id': 1, 
}) 

これがあなたの質問に答えるかどうか教えてください。

+0

Thanx Michael、それはまさに私が必要としていたものでした! –

関連する問題