在保存/创建 SQL Alchemy 中的列时为其赋值

发布于 2025-01-10 00:17:06 字数 695 浏览 0 评论 0原文

我的数据库中有一个类 user ,我想在每次创建新用户时分配一个随机值 avatar_file_name ,本质上是“保存时”。我怎样才能做到这一点?

中随机选择的数据数组,默认情况下它会从数组中选择随机字符串名称,但我认为有更好的方法来实现此目的。

avatarImages = [
    "blue-dino_128.png",
    "brown-dino_128.png",
    "green-dino_128.png",
    "orange-dino_128.png",
    "pink-dino_128.png",
    "purple-dino_128.png",
  ]

将从该类

class User(Base):
    __tablename__ = "user"

    id = Column(Integer, primary_key=True)
    first_name = Column(String(50), nullable=False)
    last_name = Column(String(50), nullable=True)
    avatar_file_name = Column(String(100), nullable=True, default=random.choice(avatarImages)
    

I have a class user in my database and I want to assign avatar_file_name a random value every-time a new user is created essentially "on save". How can I accomplish this?

Array of Data that will randomly be chosen from

avatarImages = [
    "blue-dino_128.png",
    "brown-dino_128.png",
    "green-dino_128.png",
    "orange-dino_128.png",
    "pink-dino_128.png",
    "purple-dino_128.png",
  ]

This is the class and be default it selects a random string name from the array but I think there is a better way to accomplish this.

class User(Base):
    __tablename__ = "user"

    id = Column(Integer, primary_key=True)
    first_name = Column(String(50), nullable=False)
    last_name = Column(String(50), nullable=True)
    avatar_file_name = Column(String(100), nullable=True, default=random.choice(avatarImages)
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

榕城若虚 2025-01-17 00:17:06

default=random.choice(avatarImages) 仅执行一次,因此将为每个用户选择相同的值。要为每个用户进行随机选择,请在 lambda 中调用 random.choice

default=lambda: random.choice(avatarImages)

default=random.choice(avatarImages) is executed only once, so the same value will be selected for every user. To get a random selection for each user, make the call to random.choice in a lambda:

default=lambda: random.choice(avatarImages)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文