2012-03-11 6 views
0

ModelFormを介して多対多フィールドによるモデルのリストを含むモデルインスタンスを作成しようとしています。しかし、これが発生すると、参照されているフィールドの1つを変更できる必要があります。ミッションのインスタンスがデータベースからインポートされDjango:フォームを介して別のモデルによって参照されるmanytomanyモデルフィールドを編集する

class AllAtt(models.Model): 
    weighting = models.IntegerField(null=True,blank=True) 
    mass = models.IntegerField(null=True,blank=True) 
    required_Power = models.IntegerField(null=True,blank=True) 
    memory = models.IntegerField(null=True,blank=True) 

class Mission(AllAtt): 
    name = models.CharField(max_length=50) 
    def __unicode__(self): 
     return self.name 

class Scenario(models.Model): 
    name = models.CharField(max_length=50) 
    creation_date = models.DateTimeField(default=datetime.now) 
    creator = models.ForeignKey(User,null=True,blank=True) 
    mission = models.ManyToManyField(Mission) 
    def __unicode__(self): 
     return self.name 

class ScenarioForm(ModelForm): 
    class Meta: 
     model = Scenario 
     fields = ('name','mission',) 

:ここ

は取り除かコードです。現在のところ、これはmultiplechoicefieldからMissionインスタンスを選択することができますが、これは私が必要とするものではありません。シナリオにすべてのMissionインスタンスを含めることができ、フォームを通じて「加重」フィールドを変更したいと考えています。

私がやろうとしていることの簡単な例: 私は特定の数のタスク(ミッション)を持っており、組み合わせると何かを達成します(シナリオ)。 人間には多くのタスク機能があります。私のシナリオが「日付の準備」である場合、これらの機能は次のように重要度が重み付けされている可能性があります。コーヒーを作る - 0、飼い犬-2、シャワー-3、服を着る - 5.シナリオが「Django私は新しいシナリオを作成するたびに、すべての可能なタスクの重みを変更できる必要があります。

これを達成する方法についての助力や洞察力があれば幸いです。ありがとう!

答えて

0

Missionの関係の重みをScenarioに指定する必要があることを理解しています。

基本的には、必要なものはthroughモデル(重量)です。あなたはそれがここに文書化されて見ることができます:https://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany

+0

ありがとう、それはセットアップのために働くようです。どのようにこのデータをフォームに表示させるかについてのアイデアはありますか? – xohxvalentinex

+0

私はあなたがフィールド "から" –

+0

I持っているためにフォームセットを使用すべきだと思う: WeightFormset = modelformset_factory(重量)、 'シナリオ'(=除外し、余分= 20、) \t formW = WeightFormset(request.POSTまたはなし) しかし、このデータをシナリオのインスタンスとして保存する方法を理解できません – xohxvalentinex

関連する問題