我有一个名为sequence的自动增量字段。我只希望它在这个模型所在的主题中增加1。通常最常见的是大约10.然后重置一个新主题。我希望这可以在保存覆盖方法中完成:
class Video(TimeStampedModel):
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200)
description = models.CharField(max_length=500)
topic = models.ForeignKey('video.VideoTopic')
sequence = models.IntegerField(default=1)
def save(self, *args, **kwargs):
# Get last value of sequence and increment by 1
top = Video.objects.order_by('-sequence')[0]
self.sequence = top.sequence + 1
super(Video, self).save()
我的代码问题在于,save方法中的“top”只会获得序列编号最高的视频。
如何正确保存要从中过滤查询的视频主题?
答案 0 :(得分:2)
从self.topic
:
top = Video.objects.filter(topic=self.topic).order_by('-sequence')[0]
您还可以使用latest()
代替排序并从查询集中取出[0]
:
top = Video.objects.filter(topic=self.topic).latest('sequence')
在这种情况下,latest()
将获得具有特定主题的最大Video
值的单个sequence
模型实例。