All work and no play makes Jack a dull boy
Mostrando postagens com marcador django-admin. Mostrar todas as postagens
Mostrando postagens com marcador django-admin. Mostrar todas as postagens

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

sábado, 18 de agosto de 2012

Ordering no Django 1.3

Buenas!

Hoje me deparei com duas situações: preisava ordernar um queryset com dois ou mais campos e ordenar no Admin do Django de forma diferente.

Vai pra lá, vem pra cá e cheguei na seguinte solução:

No modelo inclua o seguinte:
class Meta:
ordering = ('nome_do_campo', 'nome_do_outro_campo', )

Agora, dentro de seu admin.py faça: