首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django表单:由查询结果定义的字段,用于同时更新多个对象的单个视图

Django表单:由查询结果定义的字段,用于同时更新多个对象的单个视图
EN

Stack Overflow用户
提问于 2016-03-30 16:40:30
回答 1查看 106关注 0票数 3

在Django 1.8项目中,我有以下模型:

代码语言:javascript
运行
复制
class MeditationType(models.Model):
    """
    Stores user's meditation types and goals
    """
    creation_date = models.DateTimeField(auto_now_add=True)
    modify_date = models.DateTimeField(auto_now=True)

    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    meditation_name = models.CharField(max_length=30)

    # Meditation goals per weekday, in minutes
    goal_sun = models.PositiveIntegerField(default=0, validators=[MaxValueValidator(1440)])
    goal_mon = models.PositiveIntegerField(default=0, validators=[MaxValueValidator(1440)])
    goal_tue = models.PositiveIntegerField(default=0, validators=[MaxValueValidator(1440)])
    goal_wed = models.PositiveIntegerField(default=0, validators=[MaxValueValidator(1440)])
    goal_thu = models.PositiveIntegerField(default=0, validators=[MaxValueValidator(1440)])
    goal_fri = models.PositiveIntegerField(default=0, validators=[MaxValueValidator(1440)])
    goal_sat = models.PositiveIntegerField(default=0, validators=[MaxValueValidator(1440)])

    def get_absolute_url(self):
        return reverse('meditation_types_update', kwargs={'pk': self.pk})


class MeditationLog(models.Model):
    """
    Stores user's meditation logs (journal entries)
    """

    creation_date = models.DateTimeField(auto_now_add=True)
    modify_date = models.DateTimeField(auto_now=True)

    meditation_date = models.DateTimeField()

    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    meditation_type = models.ForeignKey(MeditationType, on_delete=models.CASCADE)

    # Amount of time (in minutes) this meditation type was practiced on this date
    meditation_minutes = models.PositiveIntegerField(default=0, validators=[MaxValueValidator(1440)])

    def get_absolute_url(self):
        return reverse('meditation_types_update', kwargs={'pk': self.pk})

我想用以下字段构建一个表单:形式字段

请注意:

  • 该表单将用于创建和更新条目。
  • 在这个例子中使用的三种类型的冥想(集中注意力、专注和慈爱)是由用户创建的(MeditationType模型),因此这些领域将有所不同。对于某些用户来说,可能是一种单一的冥想类型,而另一些用户则可能是10种不同的冥想类型。因此,表单字段必须根据每个用户的冥想类型动态定义。
  • 当提交/发布此表单时,我们必须保存MeditationLog对象的多个实例(每个冥想类型一个)。

在Django 1.8中,最简单和最有效的方法是什么?另外,如果您能想出更好的方法来构建模型(这将使表单的构建更容易),请告诉我。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-04-04 14:36:36

经过更多的研究,我终于找到了一些工作:

https://jacobian.org/writing/dynamic-form-generation/ (雅各布是Django最初的创始人之一)

http://www.dougalmatthews.com/2009/Dec/16/nicer-dynamic-forms-in-django/

https://code.djangoproject.com/wiki/CookBookNewFormsDynamicFields

http://agiliq.com/blog/2008/10/dynamic-forms-with-django/

http://blog.p3infotech.in/2013/how-to-create-dynamic-forms-in-django/

如果您有类似的问题,上述链接可能会有所帮助。

感谢那些回答的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36314824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档