自动增加每个类别中的字段?

时间:2014-05-08 21:18:43

标签: python django django-models django-orm

我有一个名为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”只会获得序列编号最高的视频。

如何正确保存要从中过滤查询的视频主题?

1 个答案:

答案 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模型实例。

另请参阅:Overriding predefined model methods