所以基本上我试图覆盖模型的save方法来判断是否指定了某个非必需字段,即m2m字段。如果是,则将其自己的布尔字段之一更新为True。目前我有这样的事情:
class Flag(models.Model):
name = models.CharField(max_length=300)
def __str__(self):
return self.name
class Model(models.Model):
BooleanField = models.BooleanField(default = False)
m2mField = models.ManyToManyField(Flag)
def save(self, *args, **kwargs):
super(Model, self).save(*args, **kwargs)
if Model.objects.filter(id = self.id, m2mField = None).exists():
Model.objects.filter(id = self.id).update(BooleanField = True)
现在这对我不起作用。我并不关心m2m字段中的内容,只是想知道用户在创建此实例时是否指定了该字段。
TIA
编辑:我用更现实的定义进行更新。
答案 0 :(得分:0)
您可以尝试检查m2mField计数是否大于0,如下所示:
class Model(models.Model):
BooleanField = models.BooleanField(default = False)
m2mField = models.ManyToManyField(Flag, blank=True)
def save(self, *args, **kwargs):
self.BooleanField = True if self.pk is not None and self.m2mField.count() > 0 else False
super(Model, self).save(*args, **kwargs)
将blank=True
参数传递给m2mField可能是个好主意。