【发布时间】:2016-11-11 06:07:38
【问题描述】:
考虑这些 Django 模型:
class MonitorSession(models.Model):
agent = models.ForeignKey(Agent, on_delete=models.CASCADE)
date = models.DateTimeField()
contact_motive = models.ForeignKey(ContactMotive)
customer_number = models.CharField(max_length=65)
protocole_number = models.CharField(max_length=65)
strong_points = models.TextField(blank=True)
points_to_improve = models.TextField(blank=True)
action_plan = models.TextField(blank=True)
def __unicode__(self):
return u"%s, %s" % (self.customer_number, self.protocole_number)
class EvaluationCategory(models.Model):
cel = models.ForeignKey(Cel, on_delete=models.CASCADE)
category = models.CharField(max_length=65)
description = models.TextField(blank=True)
max_points = models.IntegerField()
def __unicode__(self):
return u"%s: %s" % (self.cel, self.category)
class EvaluationItem(models.Model):
category = models.ForeignKey(EvaluationCategory, on_delete=models.CASCADE)
item = models.CharField(max_length=65)
def __unicode__(self):
return u"%s: %s" % (self.category, self.item)
class EvaluationScore(models.Model):
monitor_session = models.ForeignKey(MonitorSession, on_delete=models.CASCADE)
item = models.ForeignKey(EvaluationItem, )
score = models.ForeignKey(PossibleScore, on_delete=models.CASCADE)
def __unicode__(self):
return u"%s: %s" % (self.item, self.score)
现在我需要使用 MonitorSession 类中的所有字段创建一个表单。
在这些字段之后,我需要创建额外的动态表单字段,并且将从该查询返回:
fields = EvaluationItem.objects.all().order_by(EvaluationCategory__category)
您可以想象一下,字段的数量是未知的并且是动态的。
在 Django 中是否有一种自动化的方式来完成这项工作? Ar 我是否必须手动创建表单并为 Item 字段创建一个循环?我一直在尝试使用 Formsets 来完成这项工作,但我看不出 formsets 可以如何帮助我。
【问题讨论】:
-
我最近遇到了类似的问题。这篇博文对我的成功很有帮助jacobian.org/writing/dynamic-form-generation
-
嗨,这确实是工作的一部分!
-
我无法让它工作。在我看来,来自 jacobian 的代码没有得到足够的参考。没有模型。我完全处于黑暗中;(