Проблемы с Джанго-оборотнем

#django

Вопрос:

Я совсем новичок в django и работаю в простом проекте для университета. Я пытаюсь использовать django-shapeshifter, но, просто введя, как в приведенном примере, я получаю синтаксическую ошибку.У меня есть одна основная таблица, подключенная к таблицам с множеством связей, и я хотел бы работать с одним представлением для работы с формами.

Модели:

 class PreciosUnitarios(models.Model):
    redimiento = models.ForeignKey(Rendimientos, on_delete=models.CASCADE)
    mano_obra = models.ManyToManyField(ManoObra, through='PuManoObra')
    material_id = models.ManyToManyField(Materiales, through='Pu_Material')
    valor_mo = models.FloatField(
        validators=[validate_decimals], blank=True, null=True)
    valor_material = models.FloatField(
        validators=[validate_decimals], blank=True, null=True)

    def __str__(self) -> str:
        return self.redimiento.nombre

    def get_total(self):
        return self.valor_mo self.valor_material

    def get_absolute_url(self):
        return reverse('pu_detail', kwargs={'pk': self.pk})

    def save(self, *args, **kwargs):
        if self.id:
            pk = self.id
            v = Variables.objects.get(pk=2)
            rm = self.redimiento.unidades_jornal
            jc = ManoObra.objects.get(cargo='Jefe de Cuadrilla')
            pu_m = Pu_Material.objects.filter(pu_id=pk)
            pu_mo = PuManoObra.objects.filter(pu_id=pk)
            tm = pu_m.aggregate(Sum('subtotal'))['subtotal__sum']
            tmo = pu_mo.aggregate(Sum('mo_subtotal'))['mo_subtotal__sum']
            tmo = (tmo   (((jc.salario*8)/208) * 0.10))/rm
            total_herramientas = tmo * v.herramientas
            total_seguridad = tmo * v.seguridad
            subtotal = tm tmo total_herramientas total_seguridad
            total = subtotal / (1 - v.gastos_admin)
            total = total/(1-v.utilidad)
            total = total*v.iva
            self.valor_mo = total * 
                (tmo/(subtotal))
            self.valor_material = total * 
                (tm/(subtotal))

            super().save(*args, **kwargs)
        else:
            super().save(*args, **kwargs)


class PuManoObra(models.Model):
    manoObra_id = models.ForeignKey(ManoObra, on_delete=models.CASCADE)
    pu_id = models.ForeignKey(
        PreciosUnitarios, on_delete=models.CASCADE, null=True, blank=True)
    valor_jornal = models.FloatField(
        validators=[validate_decimals], null=True, blank=True)
    mo_subtotal = models.FloatField(
        validators=[validate_decimals], null=True, blank=True)
    ctd = models.PositiveIntegerField(default=1)

    def __str__(self) -> str:
        return self.pu_id.redimiento.nombre   ", " self.manoObra_id.cargo

    def save(self, *args, **kwargs):
        vj = self.manoObra_id.salario/26
        self.valor_jornal = vj
        self.mo_subtotal = self.ctd*vj
        super().save(*args, **kwargs)


class Pu_Material(models.Model):
    material_id = models.ForeignKey(Materiales, on_delete=models.CASCADE)
    pu_id = models.ForeignKey(
        PreciosUnitarios, on_delete=models.CASCADE, null=True, blank=True)
    cantidad = models.PositiveIntegerField(default=1)
    subtotal = models.FloatField(
        validators=[validate_decimals], null=True, blank=True)

    class Meta():
        unique_together = [['material_id', 'pu_id']]

    def __str__(self) -> str:
        return self.pu_id.redimiento.nombre   ", Material: " self.material_id.material_nombre

    def save(self, *args, **kwargs):
        self.subtotal = self.material_id.precio*self.cantidad
        super().save(*args, **kwargs)
 

мои формы:

     class PrecioUnitarioForm(forms.ModelForm):
        class Meta():
            model = PreciosUnitarios
            fields = ('redimiento',
                      # 'mano_obra',
                      # 'material_id',
                      # 'valor_mo',
                      # 'valor_material'
                      )
            labels = {
                'redimiento': 'Selecionar Rendimiento',
                'mano_obra': 'Selecionar Mano de Obra',
                'material_id': '',
                'valor_mo': '',
                'valor_material': '',
            }
            widgets = {
                'redimiento': forms.Select(attrs={'class': 'form-control'}),
                'mano_obra': forms.SelectMultiple(attrs={'class': 'form-control'}),
                'material_id': forms.SelectMultiple(attrs={'class': 'form-control'}),
                'valor_mo': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Precio del Material'}),
                'valor_material': forms.TextInput(attrs={'class': 'form-control'}),
            }
    
    
    class PuMaterialForm(forms.ModelForm):
        class Meta():
            model = Pu_Material
            fields = (
                'material_id', 'pu_id', 'cantidad'
            )
            labels = {
    
                'material_id': 'Material', 'pu_id': 'Preciounitario', 'cantidad': ''
            }
            widgets = {
                'material_id': forms.Select(attrs={'class': 'form-control'}),
                'pu_id': forms.Select(attrs={'class': 'form-control'}),
                'cantidad': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Cantidad'})
            }
    
    
    class PuManoObraForm(forms.ModelForm):
        class Meta():
            model = PuManoObra
            fields = (
                'manoObra_id', 'pu_id', 'ctd'
            )
            labels = {'manoObra_id': 'Mano de Obra',
                      'pu_id': 'Precio Unitario',
                      'ctd': ''
                      }
            widgets = {
                'manoObra_id': forms.Select(attrs={'class': 'form-control'}),
                'pu_id': forms.Select(attrs={'class': 'form-control'}),
                'ctd': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Cantidad'})
            }
 

the shapeshift code:

 class PrecioUnitarioFormView(MultiModelFormView):
    form_classes = ('PrecioUnitarioForm', 'PuMaterialForm', 'PuManoObraForm')
    template_name = 'cotizacion/preciosunitarios.html'
    success_url = 'cotizacion/pu_detail.html'
    success_message = ''

    def get_instances(self):
        instances = {
            'preciounitariofomr': self.request.preciosunitarios,
            'pumaterialform': Pu_Material.objects.filter(
                user=self.request.preciosunitarios).first(),
            'pumanoobraform': PuManoObra.objects.filter(
                user=self.request.preciosunitarios).first()
        }

        return instances
 

the error says that «object has no attribute name«.
Anyone can help?