All work and no play makes Jack a dull boy

sexta-feira, 23 de maio de 2014

Limitar número de instâncias num modelo do Django

Como ter apenas um registro num modelo do Django?

É possível fazer através da validação de model do próprio Django.
from django.core.exceptions import ValidationError

def validate_only_one_instance(obj):
    model = obj.__class__
    nome_modelo = model.__name__
    if (model.objects.count() > 0 and obj.id != model.objects.get().id):
        raise ValidationError("Modelo %s limitado a 1 instancia" % nome_modelo)
E no seu modelo:
from django.core.exceptions import models

class Exemplo(models.Model):
    campo = CharField()
    inteiro = IntegerField()

    def clean(self):
        validate_only_one_instance(self)
        
Veja que, dessa forma, você não impede a tentativa de criar, mas evita que a criação prossiga.

Fonte

Nenhum comentário:

Postar um comentário