首页 > 解决方案 > 是否可以从 django 下拉列表中的选项中获取值?

问题描述

所以目前我正在通过我注册到 django 管理站点的模型添加新数据,该模型由 3 个文本字段(电子邮件、国家、电话号码)组成。我还在使用 PyPI 的 phonenumbers 包进行电话号码验证,以验证输入的号码是否存在或格式错误。但是,为了进行此验证,我需要将国家/地区文本字段(例如美国)中的文本作为参数解析到验证代码中,以了解该数字是真实的还是虚假的,目前我可以传递文本,但用户会必须输入“美国”,而不是从国家列表中选择,例如从下拉列表中选择。我想通过实现一个下拉列表来改进这种格式,用一个可供选择的国家列表替换当前的国家文本字段,但是当用户选择国家美国时,它应该在前端显示“美国”在下拉列表中,但值,如在 html 上下文中应该是“US”,我想改为将“US”解析到后端进行验证,但仍显示“United States”字样供用户查看。我目前不知道如何实现这一点以及是否可以从下拉列表中获取值。请告诉我这是否可能或我应该考虑的任何其他方法。我想改为将“美国”解析到后端进行验证,但仍显示“美国”字样供用户查看。我目前不知道如何实现这一点以及是否可以从下拉列表中获取值。请告诉我这是否可能或我应该考虑的任何其他方法。我想改为将“美国”解析到后端进行验证,但仍显示“美国”字样供用户查看。我目前不知道如何实现这一点以及是否可以从下拉列表中获取值。请告诉我这是否可能或我应该考虑的任何其他方法。

标签: pythondjangodjango-models

解决方案


为此,您需要使用国家/地区的短代码向数据库中添加其他字段。

例如,CharField您可以使用ForeignKey名为Country.

这个国家可以这样实现:

class Country(models.Model):
    name = models.CharField(max_length=256)
    code = models.CharField(max_length=2)

    def __str__(self):
        return self.name

或者您可以使用Django Country 包,其中包括所有国家、它们的代码和标志(因此您可以显示国家标志而不是代码)。如果您不需要所有国家/地区列表,您可以在此处指定它们。


推荐阅读