如何在Django表单中将ForeignKey字段呈现为CharField
我的模特
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',) 该模板将用户输入文本呈现为从用户模型加载的自动完成字段. 该页面正确显示用户输入文本字段,但是当我去编辑协作者时,用户输入文本字段显示用户ID,我想显示用户名. 解决方法
您想首先弄清楚您想要的确切行为.
假设我是id = 1,username =“Joel”的用户.当您制作CollaboratorForm并在表单上显示“Joel”(我的用户名)并将其编辑为“Jane”时,您是: >尝试将我的名字编辑为“Jane”,以便id = 1现在有一个用户名= Jane? 一旦你知道,你可以继续. 我将user = forms.CharField(..)更改为username = forms.CharField(..);毕竟,那就是你真正表现出来的东西. 在您的视图中,当您创建表单时,请传递{‘username’的初始值:username-of-user-that-is-current-related}. 在您的视图中,当您处理表单时,在保存之前,使用cleaning_data [‘username’]来(a)更新该用户的用户名(如果上面的第一个案例)或(b)获取该表单的ID新用户并将其保存到.user字段(如果是上面的第二种情况). 当然,如果您想要的是真正处于更高级别的“让人们根据用户名选择用户”,您可以通过不使用CharField并使用相反,ChoiceField,您可以使用key = ID和value = name显示用户的下拉菜单.但是,根据您拥有的用户数量,可能无法很好地扩展. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |