Filtrado fácil de clave foránea en una ficha de django
Es sabido que django mapea las claves foráneas a un ModelChoiceField en ModelForm, pero ¿qué ocurre cuando sólo queremos seleccionar un subconjunto de ellas?.
Por ejemplo, supongamos que estamos dando de alta un empleado y a la hora de seleccionar su categoría sólo queremos que aparezcan las que están asociadas a su sección.
Tenemos la ficha:
class AddForm(forms.ModelForm):
class Meta:
model=Empleado
fields=('clave', 'descripcion', 'categoria', 'jefe_seccion', 'email',)
La propiedad queryset del campo categoría estará definida por defecto como Categoria.objects.all(), así que hacemos:
p=AddForm()
p.fields['categoria'].queryset=Categoria.objects.filter(seccion=self.seccion)
Con lo que en la ficha sólo nos saldrán las categorías de la sección actual.
Otra forma más complicada consiste en pasarle el parámetro al constructor de la clase pero hay que hacerlo con los kwargs por que si no tendremos problemas en cuando queramos usar la ficha para editar.
class AddForm(forms.ModelForm):
categoria=forms.ModelChoiceField( label=u'Categoría', queryset = Categoria.objects.none())
def __init__(self, *args, **kwargs):
sec = kwargs.pop('sec', None)
super(AddForm, self).__init__(*args, **kwargs)
if sec:
self.fields['categoria'].queryset = Categoria.objects.filter(seccion = sec)
class Meta:
model=Empleado
fields=('clave', 'descripcion', 'categoria', 'jefe_seccion', 'email',)
Usar subversion en windows con la línea de comandos
Por si alguien odia el TortoiseSVN y prefiere trabajar con el subversion "a mano", recomiendo este cliente de CollabNet
CollabNet subversion Command-Line Client
Use subversion in windows with the command line
if you hate TortoiseSVN and you prefer to work with svn manually, you can use this wonderful client
CollabNet subversion Command-Line Client
Procesador de texto "Sublime Text"
Estructura | S’usa per | Comandaments |
---|---|---|
Clau-valor | Cache, comptadors, locks distribuits, sessions | SET key value GET key MSET, MGET, APPEND, SUBSTR, STRLEN |
Llista | Coues de missatges | LPUSH, LPOP, LLEN, LMOVE, LTRIM |
Conjunt | interseccions, unions, etc. | SADD, SREM, SCARD, SISMEMBER, SINTER |
Hash | cache | HSET key field1 value-field1 field2 value-field2 … HGET key, HMGET, HINCRBY |
Conjunt ordenat | per rankings | ZADD, ZRANGE |