gpt4 book ai didi

python - Django ModelChoiceField 没有加号按钮

转载 作者:太空狗 更新时间:2023-10-29 17:57:21 30 4
gpt4 key购买 nike

我正在制作一个包含自定义用户的 Django 应用程序。我在下面概述了我的问题的关键组成部分,缺少的代码用“...”表示。我的自定义用户模型具有如下外键关系:

class MyCustomUser(models.AbstractBaseUser, models.PermissionsMixin)
...
location = models.ForeignKey(Location)

class Location(models.Model)
name = models.CharField(max_length=50, blank=True, null=True)

我写了一个包含这个字段的自定义用户表单,如下所示:

class MyCustomUserCreationForm(models.ModelForm)
...
location = forms.ModelChoiceField(Location.objects.all())

这一切似乎工作正常,但是,位置选择字段右侧没有加号按钮。我希望能够在创建用户时添加一个位置,就像在 Django tutorial 中创建选项时添加民意调查一样。 .根据to this question ,如果我没有更改模型的权限,我可能看不到绿色加号,但我以具有所有权限的 super 用户身份登录。知道我做错了什么吗?

最佳答案

您需要在您的模型表单中设置一个 RelatedFieldWidgetWrapper 包装器:

The RelatedFieldWidgetWrapper (found in django.contrib.admin.widgets) is used in the Admin pages to include the capability on a Foreign Key control to add a new related record. (In English: puts the little green plus sign to the right of the control.)

class MyCustomUserCreationForm(models.ModelForm)
...
location = forms.ModelChoiceField(queryset=Location.objects.all())

def __init__(self, *args, **kwargs):
super(MyCustomUserCreationForm, self).__init__(*args, **kwargs)
rel = ManyToOneRel(self.instance.location.model, 'id')
self.fields['location'].widget = RelatedFieldWidgetWrapper(self.fields['location'].widget, rel, self.admin_site)

我可能会在示例代码中出错,因此请参阅这些帖子和示例:

关于python - Django ModelChoiceField 没有加号按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18602563/

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