我想根据share_type选项字段不同的形式而不提交表单,我怎么能在Django中做到这一点?

时间:2018-01-28 15:33:23

标签: django django-models django-forms

SHARE_TYPE = (('SECONDARY ', 'secondary'),
          ('IPO', 'IPO'),
          ('RIGHT', 'Right'),
          ('BONUS', 'Bonus'),

          )

class PurchasedShare(models.Model):
    transaction_date = models.DateField()
    transaction_number = models.IntegerField(unique=True)
    quantity = models.PositiveIntegerField()
    rate = models.DecimalField(max_digits=10, decimal_places=2)
    broker = models.ForeignKey(Broker, on_delete=models.CASCADE)
    share_type = models.CharField(max_length=150, choices=SHARE_TYPE)
    symbol = models.ForeignKey(Company, on_delete=models.CASCADE)
    portfolio = models.ForeignKey(Portfolio, on_delete=models.CASCADE)
    shareholder = models.ForeignKey(ShareHolder, 
                on_delete=models.CASCADE)

    def __str__(self):
        return str(self.symbol)

例如,如果我选择IPO share_type,则创建包含字段的表单  符号,数量,费率和投资组合,如果我选择二级  share_type创建包含所有字段的表单。

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 创建第一个表单步骤,您只需要提供共享类型,然后直接转到/new-purchased-share/?share_type=SECONDARY这样的页面,该页面会显示正确的格式并显示它。

  2. 根据所选的共享类型,使用Javascript显示/隐藏以前的表单字段。