複数の部門の複数のフォームをカバーするチケット システムを構築しようとしています。各チケットフォームには、タイトル、日付、説明の標準フィールドがあります。フォームが対象とする部門によっては、チケットに追加のフィールドが必要になる場合があります。たとえば、マーケティングではどこで私たちについて聞いたのかボックスが必要になる場合がありますが、アカウントは必要ありません。
だから私はフィールド定義をフォームにマップするテーブルを持っています.
彼らが選択しているフォームに基づいて、選択したフォームに関連する追加フィールドを表示できることを願っています。ModelForm を使用する場合、これは単独では生成されませんでした。そのため、自分でこれを行う必要があると思います。
私の最初のアイデアは、特定のフォーム (filter(formid=marketing_form)) に関連するすべてのフォーム フィールド オブジェクトを取得し、それらのフィールドを作成してから、フォーム全体を保存する前にこれらのフォーム フィールドの値を保存するために保存機能をオーバーライドすることです。
私はDjangoを初めて使用するので、より良い方法があるかどうかわかりませんか?
#list of all possible fields for mapping
class Field(models.Model):
field_id = models.IntegerField(primary_key=True)
field_cat = models.ManyToManyField(Category)
field_label = models.CharField(max_length=50)
field_type = models.IntegerField(choices=FIELD_TYPE_CHOICES)
field_enabled = models.BooleanField(default=1)
def __unicode__(self):
return self.field_label
#list of all fields additional fields on a ticket
class TicketField(models.Model):
tf_id = models.IntegerField(primary_key=True)
tf_ticket = models.ForeignKey(Ticket)
tf_field = models.ForeignKey(Field)
tf_0 = models.CharField(max_length=255, blank=True)
tf_1 = models.TextField(blank=True)
tf_2 = models.BooleanField(blank=True)
tf_3 = models.ForeignKey(Employees, blank=True)