Как переключить логическое поле при изменении в другом поле в django? - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь переключить логическое поле (помеченное), когда есть изменение в поле 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)

Я ожидаю, что поле 'tagged' изменится на True, когда есть вход в 'tag' и наоборот.

1 Ответ

1 голос
/ 19 сентября 2019

похоже, что простой способ - использовать 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')
...