/ / django: come sapere se un modello viene creato con un campo m2m diverso da None - django, django-models

Django: come sapere se un modello viene creato con un campo m2m diverso da None - django, modelli django

Quindi in pratica sto cercando di scavalcare il salvataggiometodo di un modello per dire se è specificato un certo campo non obbligatorio, che è un campo di m2m. In tal caso, aggiorna uno dei suoi campi booleani su Vero. Attualmente ho qualcosa di simile a questo:

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)

E questo non funziona per me ora. Non mi interessa davvero cosa c'è nel campo m2m, sto solo cercando di sapere se quel campo è specificato dall'utente durante la creazione di questa istanza.

TIA

Modifica: aggiorno con una definizione più realistica.

risposte:

0 per risposta № 1

Potresti provare a verificare se il conteggio m2mField è superiore a 0, in questo modo:

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)

Probabilmente sarebbe una buona idea passare il blank=True argomento al m2mField.