2016-05-06 25 views
0

Djangoを使用して簡単なアプリケーションを構築しています。ここで、定期的に行われる品質管理テストの情報を記録して追跡することができます。利用可能なすべての機器のリストが表示され、一連のテストを実行するか、以前に実行された他のアクティビティを検討するかを選択できます。今のところすべてが機能しているようだ。私は新しい機器を作り、新しい試験を行い、その機器に関連する試験をろ過することができます。しかし、今私は解決できない問題に直面しています。ここで私は苦労してるモデルと私のコードのサンプルです:ManyToManyフィールドを含むDjangoフォーム

/models.py 
class Test(models.Model): 
    testgroup = models.ForeignKey(TestGroup) 
    equipament = models.ManyToManyField(Equipament, blank=True) 
    number = models.CharField(max_length=10) 
    name = models.CharField(max_length=120) 
    description = models.CharField(max_length=300, null=True, blank=True) 
    frequency = models.ForeignKey(Frequency, null=True, blank=True) 
    tolerance = models.CharField(max_length=30, null=True, blank=True) 

    def __str__(self): 
     return '%s%s%s %s' % (self.testgroup.modality, self.testgroup.abbreviation, self.number, self.name) 

    pass 


class Activity(models.Model): 
    CONFORMANCE_CHOICES = (
     ('Yes', 'Yes'), 
     ('No', 'No'), 
    ) 
    equipament = models.ForeignKey(Equipament, on_delete=models.CASCADE) 
    type = models.ForeignKey(Type, null=True, blank=True) 
    date = models.DateField(null=True, blank=True) 
    summary = models.CharField(max_length=30, null=True, blank=True) 
    user = models.CharField(max_length=50, null=True, blank=True) 
    test = models.ManyToManyField(Teste, blank=True) 
    conformance = models.CharField(max_length=10, choices=CONFORMANCE_CHOICES, null=True, blank=True) 

    def __str__(self): 
     return '%s %s' % (self.date, self.equipament) 

     pass 

私が行うために必要なものは、その結果、各テストへの適合の選択肢のいずれかを保存することができることです。アクティビティビューに、実行したいテストのリストを表示することができましたが、どのテストでその適合フィールドを保存することができますか?私の最善のアプローチは、適合フィールドをManyToManyFieldに変更することでした。フォームを通して、テストと適合の関係を作成しましたが、各テストですべての適合の選択肢を取得します。どのようにして1つのテストに適合する選択肢(選択したもの)を1つだけ定義できますか?助けてください...

答えて

0

私はこれを解決することができました。私は私のソリューションを投稿しています。多分、誰かが同じ問題を抱えていたか、あるいは持っているでしょう。私が欲しかったことを実行するために、私はinlinefomset_factoryを使用して、結果にForeignKey to Activityという中間モデルを作成しました。すべてが今働きます。

関連する問題