【问题标题】:How can I make a field in my Django app random如何在我的 Django 应用程序中随机创建一个字段
【发布时间】:2020-08-09 09:21:53
【问题描述】:

我正在处理一个 Django 项目,我想创建一个始终随机生成的字段,以便它们在数据库中是唯一的,但我似乎不知道如何做到这一点。我尝试了以下方法:

from django.db import models
 
 
  # Random character generation for
  # the unique short  URLs
 
  import string, random
 
  def random_url(n):
     return ''.join(random.choice(string.ascii_letters) for x in range(n))

 #print(random_id(6)) #testing the function

 #Class for the URL

 class ShortURL(models.Model):
       original_url = models.CharField(max_length=200)
       short_url = models.CharField(max_length=100, primary_key=True, default=random_url(6))
       timestamp = models.DateTimeField(auto_now=True)


在我的管理员视图中。所有“URL”都具有我不想要的相同随机代码。例如ABYpsB

请帮忙

【问题讨论】:

  • 这能回答你的问题吗? Generate a Unique String in Python/Django
  • 它并没有真正发挥作用。是的,它会生成一个随机字符串(就像我的函数一样),但在创建新 URL 时它不是随机的。当我在管理员中创建新 URL 时,它们都有相同的随机字符串,这不能解决我的问题。无论如何,谢谢 - 我找到了一种更好的生成字符串的方法

标签: python django


【解决方案1】:

Django 具有生成随机 id 的 UUID 字段

import uuid
from django.db import models

class MyUUIDModel(models.Model):
     id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

它将根据请求生成唯一的 id。

【讨论】:

    猜你喜欢
    • 2011-10-10
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 2019-04-25
    • 2018-11-19
    相关资源
    最近更新 更多