【问题标题】:Django, how to create form for add/edit object with m2m links?Django,如何使用 m2m 链接创建添加/编辑对象的表单?
【发布时间】:2010-05-26 10:02:01
【问题描述】:

下午好!有三种本质。产品、选项和产品选项。产品通过 ProductOption 与 Option 有多对多的链接。提示如何使用这些选项为 Product'a 创建添加/编辑的形式(不在管理页面上)?

如果只是输出 {{product.options}} - 将是带有复数选择的 SelectBox。对我来说,有形式是必要的。每个选项都有描述和地图。可以输入它们。

我所代表的自我形象:

在标签中带有选项名称的复选框,在选项描述下方。所以第 10 行。

阅读过 Internet 上的资料后,您了解到在这种情况下必须使用表单集。但是这里还有一个问题:

在产品编辑时,有必要显示所有可能的选项,而不仅仅是那些曾经保存过的选项。 IE。已保存(并已填充)加上尚未锚定到此模型。请提示在哪里挖。

谢谢。

【问题讨论】:

  • models.py文件的相关部分贴出来会更容易理解。

标签: python django django-templates django-forms


【解决方案1】:

这是我的models.py。

class Section(models.Model):
    title = models.CharField(max_length=250)

    def __unicode__(self):
        return self.title

    class Meta:
        pass


class Option(models.Model):
    title = models.CharField(blank=True, null=True, max_length=250)
    section = models.ManyToManyField(Section)

    def __unicode__(self):
        return self.title

    class Meta:
        pass


class Card(models.Model):
    title = models.CharField(max_length=250)
    section = models.ForeignKey(Section)
    options = models.ManyToManyField(Option, through='CardOption')

    def __unicode__(self):
        return self.title

    class Meta:
       pass


class CardOption(models.Model):
    card = models.ForeignKey(Card)
    option = models.ForeignKey(Option)
    description = models.TextField(blank=True, null=True, max_length = 300)

    class Meta:
        pass

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 2016-05-03
    • 1970-01-01
    相关资源
    最近更新 更多