在Django模型字段中表示NFT钱包地址

问题描述 投票:0回答:1

我正在构建一个涉及 NFT 的 Django 应用程序,我想知道使用 Django 模型字段表示 NFT 钱包地址的最佳方法。

NFT 钱包地址通常是十六进制字符串,但我不确定如何设计模型字段以有效地容纳它们。 我认为最好的选择是自定义 CharField 并具有长度约束来存储十六进制地址。但是 NFT 钱包地址有推荐的最大长度吗? 我会排除 UUIDField 和 TextField。

如果有任何示例和建议,我将不胜感激。谢谢!

django django-models blockchain ethereum nft
1个回答
2
投票

最后我想出了以下解决方案,我将其发布在这里,因为它可能对社区有所帮助:

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 和正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.