我有这个模型:
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=1
到 number=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/