[Python-es] Unicidad, nombres de sets, inicialización con set y búsqueda en un set de un modelo

Juan Asensio Sánchez okelet en gmail.com
Mar Ene 21 12:27:36 CET 2014


Hola

Estoy empezando en esto del desarrollo con Django. Vengo de Java y esto es
muy distinto... Bueno, tengo estas dos clases (bueno, es más grande, pero
en resumen...):


class Host(models.Model):
    slug = models.SlugField()

class HostIp(models.Model):
    host = models.ForeignKey(Host)
    ip = models.IPAddressField(unique=True)

Lo primero, a partir de una IP como cadena de texto (no un objeto), ¿cómo
puedo saber a qué host pertenece? He probado con
Host.objects.get(hostip_set__ip="1.2.3.4") y variantes, pero no he dado con
la tecla.

Por otro lado, ¿cómo puedo cambiar el nombre de las propiedades que son
sets? Por ejemplo, en lugar de referenciar la lista de IPs de un host como
"hostip_set", llamarlo "ips".

Otro más, ¿cómo puedo crear un objeto directamente pasando la lista de IPs?
He probado con Host.objects.create(hostip_set=[HostIp(ip="10.10.10.10")]),
pero me da error de que el host no tiene id, supongo que porque intenta
guardar las IPs antes que el host.

Aparte, y relacionado, ¿cómo puedo forzar que la lista de IPs tenga al
menos un valor?

Y por último, estoy creando hosts ahora mismo manualmente, de este modo:

host = Host.objects.create(description="Host creado de forma automática el
XXXXX")
host.hostip_set.add(HostIp(ip=remote_ip))
host.save()

Si esto lo hago varias veces con la misma IP, no me da error, cuando en la
definición del campo para la IP le he dicho que se único. ¿Alguien sabe por
qué?

Un saludo y muchas gracias por adelantado.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140121/608350bc/attachment.html>


Más información sobre la lista de distribución Python-es