2013-07-15 2 views
1

장고에서 시작합니다. 3 가지 모델, 부모 클래스 "Cliente"와 두 개의 하위 클래스 "Persona"및 "Empresa"가 있습니다. 내가 클래스와 같은 관점에서 부모를 관리 할하나의보기에서 외래 키가있는 두 장고 모델

class Cliente(models.Model): 
    idcliente = models.AutoField(unique=True, primary_key=True) 
    direccion = models.CharField(max_length=45L, blank=True) 
    telefono = models.CharField(max_length=45L, blank=True) 
    email = models.CharField(max_length=45L, blank=True) 
    def __unicode__(self): 
     return u'Id: %s' % (self.idcliente) 

    class Meta: 
     db_table = 'cliente' 

class Empresa(models.Model): 
    idcliente = models.ForeignKey('Cliente', db_column='idcliente', primary_key=True) 
    cuit = models.CharField(max_length=45L) 
    nombre = models.CharField(max_length=60L) 
    numero_ingresos_brutos = models.CharField(max_length=45L, blank=True) 
    razon_social = models.CharField(max_length=45L, blank=True) 
    def __unicode__(self): 
     return u'CUIT: %s - Nombre: %s' % (self.cuit, self.nombre) 

    class Meta: 
     db_table = 'empresa' 

class Persona(models.Model): 
    idcliente = models.ForeignKey('Cliente', db_column='idcliente', primary_key=True) 
    representante_de = models.ForeignKey('Empresa', null=True, db_column='representante_de', blank=True, related_name='representa_a') 
    nombre = models.CharField(max_length=45L) 
    apellido = models.CharField(max_length=45L) 
    def __unicode__(self): 
     return u'Id: %s - Nombre completo: %s %s' % (self.idcliente, self.nombre, self.apellido) 

    class Meta: 
     db_table = 'persona' 

models.py. "Cliente"와 "Persona"/ "Cliente"를 같은 양식에 추가, 편집 및 삭제하고 싶습니다. 너 나 좀 도와 줄 수있어?

+0

안녕하세요, Stackoverflow에 오신 것을 환영합니다! 이 Q & A 사이트의 주요 언어는 영어입니다. 질문을 번역 할 수 있습니까? –

+0

'ForeignKey'가'primary_key = True' 인 경우,'OneToOneField'를 대신 고려하십시오. –

+0

ForeignKey를 OneToOneField로 변경하면 문제가 해결됩니다. 고마워요! –

답변

1

설명서의 좋은 예가 Here입니다.

문서를 기반으로 작성 했으므로 테스트되지 않았습니다.

def manage_books(request, client_id): 
    client = Cliente.objects.get(pk=client_id) 
    EmpresaInlineFormSet = inlineformset_factory(Cliente, Empresa) 
    if request.method == "POST": 
     formset = EmpresaInlineFormSet(request.POST, request.FILES, instance=author) 
     if formset.is_valid(): 
      formset.save() 
      # Do something. Should generally end with a redirect. For example: 
      return HttpResponseRedirect(client.get_absolute_url()) 
    else: 
     formset = EmpresaInlineFormSet(instance=client) 
    return render_to_response("manage_empresa.html", { 
     "formset": formset, 
    }) 
관련 문제