1 contato possui muitos clientes e 1 cliente possui muitas obras?
Se for assim:
class Contato(models.Model):
....
class Cliente(models.Model):
contato = models.ForeignKey(Contato)
...
class Obra(models.Model):
cliente = models.ForeignKey(Cliente)
...
não sei se é bem isso que deseja. tenta fazer uma busca no google por
normalizacao de dados.
t+
Sendo assim, ficaria:
class Contato(models.Model):
nome = models.CharField(max_length=100)
... outros campos aqui
class Cliente(models.Model):
contato = models.OneToOneField(Contato, primary_key=True)
... outros campos aqui
class Obra(models.Model):
cliente = models.ForeignKey(Cliente)
... outros campos aqui
Entretanto, dependendo do caso, ficaria mais simples de colocasse um
campo char na tabela Contato onde 'S' significa que o contato é
cliente e 'N' que não é cliente.
Abaixo a parte do manual do django que fala sobre relacionamento 1 para 1:
http://docs.djangoproject.com/en/dev/topics/db/models/#one-to-one-relationships
http://www.djangoproject.com/documentation/models/one_to_one/
t+
Então no caso o relacionamento entre contato e cliente é de 1 para 1 e
cliente e obra de 1 para muitos.
Sendo assim, ficaria:
class Contato(models.Model):
nome = models.CharField(max_length=100)
... outros campos aqui
class Cliente(models.Model):
contato = models.OneToOneField(Contato, primary_key=True)
... outros campos aqui
... outros campos aqui
class Obra(models.Model):
cliente = models.ForeignKey(Cliente)
Entretanto, dependendo do caso, ficaria mais simples de colocasse um
campo char na tabela Contato onde 'S' significa que o contato é
cliente e 'N' que não é cliente.
| Request Method: | GET |
|---|---|
| Request URL: | http://127.0.0.1:8000/admin/contactos/obra/add/ |
| Exception Type: | TemplateSyntaxError |
| Exception Value: | Caught an exception while rendering: no such column: contactos_cliente.nome_id |
| Exception Location: | /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/template/debug.py in render_node, line 81 |
--
Gustavo Henrique
Tecnologia para Pequenas e Médias Empresas
http://www.gustavohenrique.net
mysql> desc myapp_cliente;
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| nome_id | int(11) | NO | UNI | NULL | |
| email | varchar(75) | NO | | NULL | |
+---------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
mysql> desc myapp_contacto;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| nome | varchar(50) | NO | | NULL | |
| email | varchar(75) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
mysql> desc myapp_obra;
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| numero | int(11) | NO | PRI | NULL | |
| reg_data | date | NO | | NULL | |
| entrada | date | NO | | NULL | |
| saida | date | NO | | NULL | |
| nome_do_trabalho | varchar(80) | NO | | NULL | |
| preview | varchar(100) | NO | | NULL | |
| cliente_id | int(11) | NO | UNI | NULL | |
| vendedor_id | int(11) | NO | MUL | NULL | |
| descricao | longtext | NO | | NULL | |
+------------------+--------------+------+-----+---------+-------+
9 rows in set (0.00 sec)