当另一个db插入记录时如何更新一个db?

时间:2015-04-18 06:29:49

标签: python django

我使用django管理站点,有两个表,一个是Category,其中totalitems列存储此类别的总数,另一个是Article,{{1有一个外键引用Article,当我在管理站点中创建一篇新文章时,更新应该增加Category,我以这种方式失败了:

models.py

Category totalitems
虽然sql操作成功,但是列totalitems没有更新,我在哪里做错了?哪个是在模型或django AdminSite中自动更新受影响模型的最佳位置?

2 个答案:

答案 0 :(得分:2)

更改过滤器表达式:

Category.categories.filter(pk=self.category.pk).update(
                                            totalitems = F('totalitems') + 1)

但是如果删除totalitems,你的错误Article计数。更改文章的类别也会导致总计数无效。

答案 1 :(得分:1)

提供答案,提供问题评论中所要求的替代方法。

不是保持计算字段'而是在运行时通过Category类上的total_items()函数计算它。

class Category(models.Model):
    #id = models.IntegerField(primary_key=True,help_text='primary key',auto_created=True)
    name = models.CharField(max_length=50,help_text='category name')
    description = models.TextField(default='',help_text='category description')
    coverimg = models.CharField(max_length=200,default='',help_text='category front cover image')
    covercolor = models.CharField(max_length=7,default='#ffffff',help_text='color for each category background')
    createtime = models.DateTimeField(auto_now_add=True)
    modifytime = models.DateTimeField(auto_now=True)

    categories = models.Manager()

    class Meta:
        db_table = 'article_category'

    def __str__(self):
        return self.name

    def total_items(self):
        return Articles.objects.filter(category=self).count()