我正在构建一个涉及 NFT 的 Django 应用程序,我想知道使用 Django 模型字段表示 NFT 钱包地址的最佳方法。
NFT 钱包地址通常是十六进制字符串,但我不确定如何设计模型字段以有效地容纳它们。 我认为最好的选择是自定义 CharField 并具有长度约束来存储十六进制地址。但是 NFT 钱包地址有推荐的最大长度吗? 我会排除 UUIDField 和 TextField。
如果有任何示例和建议,我将不胜感激。谢谢!
最后我想出了以下解决方案,我将其发布在这里,因为它可能对社区有所帮助:
from django.core.validators import RegexValidator
from django.db import models
class UserProfile(models.Model):
wallet_address_eth = models.CharField(
verbose_name="Ethereum Wallet Address",
max_length=42,
unique=True,
validators=[RegexValidator(regex=r'^0x[a-fA-F0-9]{40}$')],
)
# ...
模型字段上的正则表达式确保
wallet_address_eth
限制为 42 个字符,并遵循以太坊钱包地址格式。
请记住,这种方法特定于以太坊地址,如果您的应用程序需要支持具有不同地址格式的其他区块链网络,您可能需要相应地调整 len 和正则表达式。