首页 > 解决方案 > django中另一个字段发生变化时如何切换布尔字段?

问题描述

当字段(标记)发生变化时,我正在尝试切换布尔字段(ManyToMany标记)。我怎样才能做到这一点?

class Tagger(models.Model):
    tagged = models.BooleanField(default = False)
    appName =  models.ForeignKey(AppName,on_delete=models.CASCADE, null=True, blank=True)
    tag = models.ManyToManyField(Tag,blank=True)

当“标签”中有输入时,我希望“标签”字段切换为 True,反之亦然。

标签: pythondjangoboolean

解决方案


看起来简单的方法是使用property

class Tagger(models.Model):
    appName =  models.ForeignKey(AppName,on_delete=models.CASCADE, null=True, blank=True)
    tag = models.ManyToManyField(Tag, blank=True)

    @property
    def tagged(self):
        return bool(self.tag.all())

要在管理仪表板中显示该字段,只需将其添加到 中list_display,例如:

class TaggerAdmin(admin.ModelAdmin):
    list_display = (..., 'tagged')

推荐阅读