gpt4 book ai didi

django - 如何在 Django 表单中将 ForeignKey 字段呈现为 CharField

转载 作者:行者123 更新时间:2023-12-01 05:13:40 24 4
gpt4 key购买 nike

我的模特

class Collaborator(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)

我的表格:
class CollaboratorForm(forms.ModelForm):
user = forms.CharField(max_length=30, required=False)
class Meta:
model = Collaborator
fields = ('user',)

该模板将用户输入文本呈现为 autocompleteUser 加载的字段模型。

该页面正确显示用户输入文本字段,但是当我去编辑协作者时,用户输入文本字段 显示用户 ID 我想显示用户名 反而。

最佳答案

您想首先弄清楚您想要的确切行为是什么。

假设我是 id=1、username="Joel"的用户。当您制作 CollaboratorForm 并在表单上显示“Joel”(我的用户名)并编辑它以显示“Jane”时,您是:

  • 试图将我的名字编辑为“Jane”,以便 id=1 现在有一个 username=Jane ?
  • 或尝试将关联用户更改为与该用户名匹配的用户?

  • 一旦你知道了,你就可以继续了。

    我会更改 user = forms.CharField(..)username = forms.CharField(..) ;毕竟,这才是你真正表现出来的。

    在您看来,当您创建表单时,将初始值传递给它 {'username':username-of-user-that-is-currently-related} .

    在您看来,处理表单时,在保存之前,请使用 cleaned_data['username'] (a) 更新该用户的用户名(如果是上述第一种情况)或 (b) 获取新用户的 ID 并将其保存到 .user字段(如果是上述第二种情况)。

    当然,如果您真正想要的是更高级别的“让人们根据用户名选择用户”,那么您可能能够以不同的方式更轻松地解决这个问题——根本不使用 CharField,而使用取而代之的是 ChoiceField,因此您可以显示具有 key=ID 和 value=name 的用户下拉菜单。但是,根据您拥有的用户数量,这可能无法很好地扩展。

    关于django - 如何在 Django 表单中将 ForeignKey 字段呈现为 CharField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22547673/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com