Quantcast
Channel: Error con múltiple llave foránea al mismo modelo en Django - Stack Overflow en español
Viewing all articles
Browse latest Browse all 2

Error con múltiple llave foránea al mismo modelo en Django

$
0
0

Necesito que me ayuden por favor con un error que me sale, he intentado poner los related_names pero sigue saliendo el mismo error. (uso Django 1.6.5 y Python 2.7)

Error:

error1

Mis modelos:

class Novedad(models.Model):    persona = models.ForeignKey(Persona, related_name="persona")    responsable = models.ForeignKey(Persona, related_name="responsable")    municipio = models.ForeignKey(Municipio)    area = models.ForeignKey(Area) # área de ocurrencia de la novedad    cargo = models.ForeignKey(Cargo) # cargo ejercido el dia de la novedad    sucursal = models.ForeignKey(Sucursal)    fecha_diligenciamiento = models.DateTimeField(auto_now_add=True, blank=True)    observaciones = models.TextField(blank=True, null=True)    class Meta:        abstract = Trueclass AusentismoBase(Novedad):    fecha_inicio = models.DateField(verbose_name="Fecha Inicial")    fecha_fin = models.DateField(verbose_name="Fecha Final")    mes = models.IntegerField(validators=[no_negativo])    quincena = models.IntegerField(validators=[no_negativo])    hora_inicio = models.TimeField(verbose_name="Hora Inicial", blank=True, null=True)    hora_fin = models.TimeField(verbose_name="Hora Final", blank=True, null=True)    motivo = models.IntegerField(choices=MOTIVOS_AUSENTISMO, verbose_name="Tipo de Ausentismo")    eps = models.ForeignKey(Eps)    arl = models.ForeignKey(Arl)    edad = models.IntegerField(validators=[no_negativo])    salario = models.IntegerField(validators=[no_negativo])    #jornada = models.IntegerField(choices=JORNADAS, verbose_name="Jornada")    def __unicode__(self):        return (u"Ausentismo %s: %s - %s)"%(self.persona, self.motivo, self.fecha_inicio)).strip() or "-"class Reintegro(Novedad):    area_seleccionada = models.ForeignKey(Area, related_name="area_seleccionadaR", verbose_name="nueva área seleccionada")    cargo_seleccionado = models.ForeignKey(Cargo, related_name="cargo_seleccionadoR", verbose_name="nuevo cargo seleccionado")    fecha_ingreso = models.DateField()    tipo_empleado = models.CharField(max_length=1, choices=TIPO_EMPLEADO)        

Mi único formulario (por ahora):

class AusentismoBaseForm(forms.ModelForm):    class Meta:        model = AusentismoBase        exclude = ('persona', 'responsable', 'area', 'cargo', 'sucursal', 'mes', 'quincena', 'eps', 'arl', 'edad', 'salario')        widgets = {'municipio': Select2Widget(),'fecha_inicio' : MyDateWidget(),'fecha_fin' : MyDateWidget(),'hora_inicio': TimeWidget(usel10n=False, bootstrap_version=3),'hora_fin': TimeWidget(usel10n=False, bootstrap_version=3),            #'soporte' : MyFileInput(),'observaciones': Textarea(attrs={'cols': 30, 'rows': 2}),        }

Mi única vista (por ahora):

def crear_ausentismo(request, idPersona=None):    persona = None    hoy = datetime.now()    form = AusentismoBaseForm()        form2 = CedulaForm(request.POST)    if(idPersona):        persona = Persona.objects.get(id=idPersona)        form = AusentismoBaseForm(request.POST)        if form.is_valid():            print("dió clic")            objeto = form.save(commit=False)            objeto.persona = persona            objeto.responsable = Persona.objects.get(usuario=request.user)            objeto.area = persona.cargo.area            objeto.cargo = persona.cargo            objeto.sucursal = persona.sucursal            objeto.mes = hoy.month            if hoy.day >= 16:                objeto.quincena = 2            else:                objeto.quincena = 1                objeto.eps = persona.eps                objeto.arl = persona.arl                objeto.edad = edad(persona)                objeto.salario = persona.salario            objeto.save()            form.save()            return redirect('crear_ausentismo', persona.id)        else:            print("aún no da clic")            form = AusentismoBaseForm()            form2 = CedulaForm()    else:        if form2.is_valid():            persona = form2.cleaned_data['persona']            return redirect('crear_ausentismo', persona.id)        else:            try:                form2 = CedulaForm({'persona': persona.id})            except Exception:                form2 = CedulaForm()    return render(request, 'ausentismo.html', {'persona': persona,'form': form,'form2': form2,'hoy': hoy,        })

Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images