【问题标题】:Correct syntax in django's forms.py?django 的 forms.py 中的语法正确吗?
【发布时间】:2021-09-24 12:01:45
【问题描述】:

我目前正在 django 中处理表单,并希望在表单中的现有字段中添加另一个字段。原文是:

class NewMessageForm(forms.ModelForm):
    class Meta:
        model = Message
        fields = ['content']

我想添加另一个字段,称为“接收者”。我在想也许我会像这样添加它:

fields = ['content'], ['reciever']

但它给了我一个错误:

文件“C:\Users\Rebecca.Bi\OneDrive - St. Agnes Academy\Desktop\temp newsment\newsment-copy\env\lib\site-packages\django\forms\models.py", 第 190 行,在 if (not exclude or f not in exclude) and f not in ignored TypeError: unhashable type: 'list'

在 forms.py 中添加这个新字段的正确语法是什么?我正在使用 python 3.7

感谢您的帮助 - 一切都很重要!

【问题讨论】:

  • 第190行是什么

标签: python python-3.x django forms django-forms


【解决方案1】:

fields 是一个包含您选择的字段的列表,所以就这么简单:

fields = ['content', 'reciever']

您可以在这里阅读更多内容:djangoproject modelforms

【讨论】:

    【解决方案2】:

    fields = ['content'], ['reciever'] 创建一个包含 2 个列表的元组,这在这种情况下没有意义。

    TypeError: unhashable type: 'list' 的错误是由于 django 尝试对 fields 中的每个元素进行哈希处理而无法对列表进行哈希处理。

    相反,您应该只将“接收者”添加到列表中:

    fields = ['content', 'reciever']
    

    顺便说一句,reciever 应该拼写为 receiver

    【讨论】:

    • 啊,感谢您也发现了拼写错误!这也解决了我的问题,耶!编辑:我不能接受你的回答,因为有时间限制,但我稍后会
    猜你喜欢
    • 2022-08-06
    • 2017-12-09
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多