Django,独特的字段生成

2023-12-01

我有一个促销模型,其中包含促销代码和购买模型类的外键。

这是模型:

class Promotion(models.Model):
 purchase =  models.ForeignKey('Purchase')
 promotion_code = models.CharField(max_length=20)
 def promotion_code_generate(self): #returns a string based promotion code with 7 length
  from django.conf import settings
  import random, string
  return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(7))
 class Meta:
  unique_together = (("purchase", "promotion_code"),)

现在我希望我的 Promotion_code 字段对于每次购买都是唯一的,为此我添加了unique_together = (("purchase", "promotion_code"),)到类元。通过管理面板输入新条目时效果很好,因为促销代码字段为空,我必须手动输入。

然而,我想让它变得独特,以便当购买完成时,系统应该采用该 Purcase 模型实例并自动生成通过 Promotion 模型的购买字段绑定的 Promotion 类实例。

为此,我需要两件事:

1 - 我需要我的 Promotion_code_generate 方法检查早期的促销模型实例,如果当前生成的代码在过去不存在于该交易中,则返回它,如果不重新生成,则重新尝试,直到不存在的促销代码字符串找到该购买。

2-我尝试将默认的promotion_code_ Generation分配给promotion_code字段,但是失败了:

promotion_code = models.CharField(max_length=20,default=self.promotion_code_generate())

这些如何解决呢?


import random

@property
def promotion_code_generate(self):
    while 1:
        prom_code = str(random.random())[2:]
        try:
            Promotion.objects.get(promotion_code=prom_code)
        except:
            return prom_code

将其定义为@property,您可以将其分配给default范围。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django,独特的字段生成 的相关文章

  • uwsgi协议比http协议快吗?

    我正在尝试部署 django 应用程序的各种设置 我的第一选择是使用带有 mod wsgi 的简单 apache 服务器 我之前已经实现了该服务器供私人使用 由于当前的部署是供公众使用的 因此我正在考虑各种选择 根据网上提供的信息 使用 n
  • Django base.html扩展为homepage.html,出现静态图像,但home.css不起作用

    Problem 正如标题所示 我正在构建一个 django 项目 base html 扩展为 homepage html 并且工作正常 出现静态图像 但 home css 在任何地方都不起作用 Update 我已经切换了base html
  • 如何向 django 中的用户模型添加自定义权限?

    默认情况下 在 django 中 当安装了 django contrib auth 的情况下运行syncdb时 它会在每个模型上创建默认权限 如 foo can change foo can delete 和 foo can add 要向模
  • Django + 后台任务如何初始化

    我有一个基本的 django 项目 用作 Condor 计算集群的前端接口来生成模拟 用户可以从 django 应用程序开始模拟 在 Condor 中 与仿真相关的元数据和仿真状态保存在数据库中 我需要添加一个新功能 某些 模拟完成时发出通
  • 检查空查询集

    我想确认这是否是检查空查询集的正确方法 如果这就是为什么我会遇到 UNIQUE 约束错误 syn check Synonym objects filter MD objects get filter dict synonym type St
  • 每次都在django查询数据库中过滤查询集吗?

    想象一下我有以下代码 qs Users objects all list for i in range 10 list append qs filter age i 这里过滤器被调用 10 次 它是连接到数据库 10 次还是第一次使用过滤器
  • 查询中的自定义属性

    鉴于下面的简化示例 我将如何访问查询集中的自定义 current status 属性 有可能吗 目前 我想列出所有当前事件并显示当前状态 我可以让属性显示在模板中 但我无法通过它来排序查询集 或者 我是否需要在 选择 中创建一个带有某种嵌套
  • Django 共享库/类

    我是 django 新手 正在寻找放置我的共享库的建议 我计划创建我想要在项目中的所有应用程序中使用的类 放置它们的最佳位置在哪里 例如抽象模型 regards 我们通常这样设置我们的项目 site init py manage py se
  • Python:内联 if 语句 else 不执行任何操作

    如果 Django 模型的字段匹配条件 则将其分配给一个值 g Car objects get pk 1234 g data version my dict dataVersion if my dict else expression fa
  • django-tables2:添加模型中未找到的新自定义列

    我有下表 class TaskTable tables Table def render foo self raise Exception class Meta model Task fields foo 对于以下型号 class Task
  • Django celery 4 - ValueError:启动 celery 工作程序时,以 10 为基数的 int() 的文字无效

    我已将 celery py 配置为其文档 但我将 celery 代理 URL 放入 AWS SQS 但无法启动它工作 当我运行 celery 工作程序时 我得到的 ValueError 为 File Users abd Desktop pr
  • Django 的 ClearableFileInput 小部件在提交时不会传递初始(“当前”)值

    我的基本目标是创建一个表单 使用ModelForm 预先填充现有数据库对象中的数据 允许用户修改这些数据 然后将提交的表单保存为new目的 类似于 复制 然后 修改后粘贴 设置 除了文件字段和 ClearableFileInput 小部件之
  • 修改不同Django用户的会话数据

    这可能不可能 但是当某些情况发生时 我想修改某些登录用户的会话数据 标记一些额外的逻辑需要在下次加载页面时运行 有没有办法通过用户 ID 访问用户的会话 tldr Query Session模型 然后通过修改匹配会话SessionStore
  • 使用 Django 添加额外 \\ 字符的 JSON 编码

    我正在尝试创建一个函数 将包含消息和 Django 模型实例的字典转换为 JSON 然后我可以将其传回客户端 例如 我在 models py 中定义了模型 Test from django db import models class Te
  • Django 模板:输出带有所有小数位的浮点数

    我如何在 django 模板中输出这个数字 小数位数是可变的 我事先不知道 x 0 000015 1 x 输出是 1 5e 05 2 x stringformat f 输出是 0 000015 这不是本地化的 应该有逗号 我需要对输出进行本
  • 禁用或限制 /o/applications(django rest 框架、oauth2)

    我目前正在使用 Django Rest 框架编写 REST API 并使用 oauth2 进行身份验证 使用 django oauth toolkit 我对他们俩都很满意 他们做的正是我想要的 然而 我有一个担忧 我正在将我的应用程序传递到
  • 使用缓存时计算“页面浏览量”或“点击量”

    我有一个叫做show board 在其中 除其他外 我增加了一个字段Board views每次运行时加 1 以计算页面浏览量 问题是当我在该视图上使用 cache page 装饰器时 Board views仅在每次生成新的缓存视图时才会增加
  • 预取相关之后选择相关

    我的模型看起来像 class Book models Model publisher models ForeignKey Publisher This is not important class Baz models Model a mo
  • 在django中将子类模型实例转换为另一个子类模型实例?

    我有一个 ModelBase ModelA ModelB 我想将模型实例更改为模型实例 我可以处理他们的属性差异 我看过相关问题 但对我来说不太有用 如何从现有的基本模型实例创建继承的 django 模型实例 https stackover
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可

随机推荐

  • 将 bean 自动装配到 JSF 托管 bean 时为空指针

    我使用 Spring Java 邮件和 Velocity 模板开发了一个电子邮件服务 如下所示 电子邮件 java Component public class Email private JavaMailSender mailSender
  • 1.Javascript中的toString()语法错误

    为什么下面的第一行给出错误 而第二行和第三行工作正常 1 toString SyntaxError 1 toString OK 1 toString OK The 存在歧义 它是小数还是属性访问器 解释器将其视为十进制 因此您可以使用 允许
  • 使用 javascript 压缩所有表单数据

    我想压缩一个包含超过 1000 个变量的巨大 HTML 表单中的所有数据 以规避 5 3 9 之前的 PHP 版本中的 max input vars 限制 如何使用 javascript 读取 HTML 表单中的所有数据 将其序列化 或创建
  • 从命令行编译 CUDA 代码

    我正在尝试使用以下语法从命令行编译 CUDA 代码 nvcc c MyFile cu ccbin C Program Files x86 Microsoft Visual Studio 10 0 VC bin 我安装了 CUDA Toolk
  • 如何在cakephp中循环创建pdf文件?

    我已经实现了pdf创建 http bakery cakephp org articles kalileo 2010 06 08 creating pdf files with cakephp and tcpdf 但按照我的逻辑 有一个链接
  • 从tinyMCE中的插入符位置删除x个字符

    我正在开发一个项目 用户可以输入特殊字符 然后按 Tab 键自动完成值 这部分大部分工作正常 但我希望能够从插入符位置之前删除 x 个字符 例如 如果 是插入符号 我有以下文本 chr 我希望能够删除光标位置之前的 3 个字符 例如我最终会
  • 使用 flags() 创建一个 QTableWidgetItem

    我不明白 QTableWidgetItem Chapter 中的 Qt5 文档 我无法获得正确的参数来将新创建的表格单元设置为可编辑 我有这段代码 for i item in enumerate event desc start 0 pri
  • 如何消除结构体数据成员之间的填充字节

    我有一个带有 消息 的二进制文件 我试图使用结构将字节放入正确的变量中 在我的示例中 我使用了两种类型的消息 Tmessage 和 Amessage include
  • 具有 X 和 Y 值对的数据

    是否可以在中使用 X 和 Y 对dataChart js 中用于创建条形图的选项 data 08 09 2016 12 09 09 2016 19 形式为 X Y 我在文档中没有找到任何关于它的参考 我越接近 发现这个折线图示例 data
  • 如何使用 Selenium 和 Java 通过 CSS 选择器以记分牌格式 Web 元素打印击球手的得分

    我想使用 CSS 选择器在 selenium 中打印板球比赛期间所有击球手的得分 所有行都有相同的类名 并且运行位于第三行 因此我使用 CSS 选择器仅选择第三行 但我无法打印运行 这是我的代码 package SomeBasicAutom
  • 短名称仅适用于 C 盘

    我正在尝试在 Windows 上查找路径的短名称 由于某种原因 以下命令仅在 C 驱动器上运行时才有效 for d I in do echo sI 我想要我的 D 驱动器上的文件夹的简称 检查其他驱动器是否启用了 8 3 表示法 http
  • Do...循环直到具有多个条件

    我有一个简单的问题 我在网上没有找到具体信息 我想表演一个Do Loop Until循环 但我想在末尾插入多个条件 我想要做 Do my code Loop Until Condition 1 And Condition 2 And And
  • 更改 Sweave 中 ggplot2 图的大小,而不使文本/数字过大

    我找到了这个question关于更改 Sweave 中 ggplot2 图的大小 我添加了Sweaveopts width 3 height 3 它确实缩小了绘图的大小 但并没有缩小文本 所以最后 轴上的所有数字都会重叠 有没有办法在 Sw
  • 插入的图像未显示在 Google 电子表格中

    当我尝试使用下面的代码在 Google 电子表格中插入图像时 它的工作正常 var activeSheet SpreadsheetApp getActiveSpreadsheet getActiveSheet var image activ
  • 什么是间接扩展? ${!var*} 是什么意思?

    我正在阅读 Bash 初学者指南 它说 如果第一个字符为PARAMETER是一个感叹号 Bash 使用由其余部分形成的变量值PARAMETER作为变量的名称 然后扩展该变量 并在其余替换中使用该值 而不是PARAMETER本身 这称为间接扩
  • 如何解决android studio中无法找到adb(IllegalArgumentException)的问题? [复制]

    这个问题在这里已经有答案了 从 2 2 更新到 2 3 后 我无法使用 android studio 运行我的项目 当我尝试运行我的项目时 我总是收到 无法找到 adb 之类的错误 给我一个正确的解决方案来解决这个问题 我尝试了很多方法但无
  • 两个接口有相同的方法

    Interface A int Add int a int b Interface B int Add int a int b Class D A B int Add int a int b return a b 代码工作正常并且没有产生任
  • 角度 8 中的延迟加载模块

    我有一个仪表板应用程序 我在其中延迟加载小部件 不绑定到路线 我是通过定义一个对象来做到这一点的 name string loadChildren string 然后在我的app module我会做provideRoutes 这将导致 cl
  • 如何将非常大的 CSV 数据集加载到 d3 中

    正如标题所示 我有一个 CSV 文件 250mb 和 700k 行 我无法将其加载到 d3 中 我尝试按照通常加载 csv 文件的方式加载它 但没有成功 目前 它不会出错 并且我在控制台中得到一个空数据数组 不确定文件是否太大或者我加载不正
  • Django,独特的字段生成

    我有一个促销模型 其中包含促销代码和购买模型类的外键 这是模型 class Promotion models Model purchase models ForeignKey Purchase promotion code models C