【问题标题】:modelformset_factory excludes too many fieldsmodelformset_factory 排除了太多字段
【发布时间】:2012-02-23 22:42:04
【问题描述】:

我认为这可能是 Django 1.2 中 modelformset_factory 中的一个错误,但我希望其他人仔细检查一下(也可能在较新的 djnago 版本中)。

仅供有兴趣的人使用 - 模型代表可能的分数,以及可用于工人培训报告的分数集。

models.py:

class ScoreSet(Model):
    unit = ForeignKey(Unit)
    description = CharField(max_length=20, verbose_name='description')

class Score(Model):
    scoreset = ForeignKey(ScoreSet)
    score = CharField(max_length=8, verbose_name='score')
    description = CharField(max_length=30, verbose_name='description')

现在:

FormSet = modelformset_factory(Score, exclude='scoreset', extra=5, can_delete=True)

将生成没有 scoreset 和 score 字段的表单集。如果您将“scoreset”字段名称更改为其他任何名称(例如“ss”),它可以正常工作,并且仅排除“ss”字段。

【问题讨论】:

    标签: django formset


    【解决方案1】:

    Exclude 应该是一个元组,而不是一个字符串:

    exclude=('scoreset',)
    

    【讨论】:

    • 你是对的。谢谢。无论如何,这是一种奇怪的行为, exclude='scoreset' 有效,并且排除了 'score' 和 'scoreset',而 exclude='ss' 仅排除了 'ss'。
    • 如果你在 Python 中使用了错误的类型,你会得到意想不到的行为。在这种情况下,请注意 score in 'scoreset' 的计算结果为 True,但 score in 'ss' 没有。
    猜你喜欢
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-14
    相关资源
    最近更新 更多