django - 每个用户自动递增 django 模型字段

标签 django django-models model field auto-increment

我有这个模型:

class Invoice(models.Model):
    owner  = models.ForeignKey(settings.AUTH_USER_MODEL)
    data   = models.TextField(default=None, blank=True, null=True)
    number = models.PositiveIntegerField(default=0, null=False)

我需要的是为每个单独的用户自动增加字段number。基本原理是每个用户都有一个 Invoice 列表,从 number=1number=latest.number+1

我确实了解 F() 表达式,但无法弄清楚如何为每个特定用户引用最新/最大的数字。也许 Invoice.objects.filter(owner=request.user).aggregate(Max('number')) 是路径,但是如何确保 Max( )F()

最佳答案

您可以通过重写模型中的保存方法并向其写入自定义逻辑来实现此功能和类似功能。

class Invoice(models.Model):
    owner  = models.ForeignKey(settings.AUTH_USER_MODEL)
    data   = models.TextField(default=None, blank=True, null=True)
    number = models.PositiveIntegerField(default=0, null=False)

    def save(self, *args, **kwargs):
        if self.pk:
            self.number += 1
        # Write all your logic here, like handeling max value etc
        return super(Invoice, self).save(*args, **kwargs)

关于django - 每个用户自动递增 django 模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33922447/

相关文章:

php - updateOrCreate 在 laravel 中导致 ErrorException

java - 学习JBoss流口水: what should be my model

node.js - 在不同文件中为 Mongoose 需要另一个模型中的模型模式

python - 如何在运行 Django 测试之前加载测试 yaml 文件?

database - django uml 数据库

django - 理解 Django 中的管理者和 self

python - 如何将 django/python 中的模型对象列表序列化为 JSON

django - django项目文件夹中的 '.idea'目录是什么?

Django : How do I call "reverse" on a link to a static image file?

python - Django QuerySet .defer() 问题 - 错误或功能?