【问题标题】:Why does the foreignkey show up as a dropdown box?为什么外键显示为下拉框?
【发布时间】:2020-07-29 18:02:02
【问题描述】:

您好,我想知道为什么当我尝试在模型中包含外键时,它会显示为下拉框而不是文本框?

这是我的models.py

class VolunteerApplication(models.Model):  

    volunteer_name = models.ForeignKey(VolunteerProfile, on_delete=models.PROTECT)
    phone_number = models.CharField(max_length=10)`

这是它在网站上显示的内容

【问题讨论】:

  • 当然它会显示下拉菜单,因为外键关系是通过对象而不是任何文本,所以你必须在该字段中传递对象
  • 其实是 Django admin 的特性。定义外键时,意味着它已经创建,因此很容易导航和选择。

标签: python html django django-models foreign-keys


【解决方案1】:

这是因为它是一个外键。这是 django 管理员的默认渲染行为。

如果管理员试图在下拉列表中呈现的对象过多,则管理员屏幕会变慢/拒绝加载。

raw_id_fields 的问题在于它不显示所选外键的字符串表示形式。无需下拉菜单即可查看外键预览的简单方法 - 使用 django-dynamic-raw-id 包。

https://github.com/lincolnloop/django-dynamic-raw-id

【讨论】:

  • 哦,好吧。如何将其转换为 texbox 而不必这样做
  • 使用上面提到的包/库。这将解决它。
【解决方案2】:

在您的管理表单中,将您的字段设置为 raw_id_fields

class AdminForm
    .....
    raw_id_fields = ['volunteer_name']

【讨论】:

  • 我为什么要包含志愿者号码?
  • 对不起
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多