Hello guys!

I'm trying to recreate a form with Inline using django and django-stuff. I 
already got it once, but this is not being easy!

I want to create a form that can register a Client and its addresses, or 
something similar to this link here.

Example 1: Adding contacts.

Example 2: Adding addresses.

I'm trying like this:

*Forms.py*






































*from django import formsfrom material import Layout, Row, Fieldsetfrom 
.models import Clientclass Address(forms.Form):# TA FEITO    public_place = 
forms.CharField(label='Logradouro')    number = 
forms.CharField(label='Número')    city = forms.CharField(label='Cidade')  
  state = forms.CharField(label='Estado')    zipcode = 
forms.CharField(label='Cep')    country = forms.CharField(label='País')    
phone = forms.CharField(label='Fone')    class Meta:        
verbose_name_plural = 'endereços'        verbose_name = 'endereço'    def 
__str__(self):        return self.profissaoclass 
ClientModelForm(forms.ModelForm):    class Meta:        model = Client      
  fields = '__all__'    layout = Layout(        Fieldset("Client",          
       Row('name', ),                 Row('birthday','purchase_limit'),    
             Row('address1', ),                 Row('compra_sempre', ),    
             ),    )*
*views.py*













































*import extra_viewsfrom braces.views import LoginRequiredMixinfrom 
extra_views import CreateWithInlinesView, NamedFormsetsMixinfrom material 
import LayoutMixin, Fieldsetfrom material.admin.base import Inlinefrom 
danibraz.persons.forms import *from .models import Addressclass 
ItemInline(extra_views.InlineFormSet):    model = Address    fields = 
['kynd',         
'public_place','number','city','state','zipcode','country','phone']#campos 
do endereço    extra = 1# Define aquantidade de linhas a apresentar.class 
NewClientsView(LoginRequiredMixin,LayoutMixin,                    
 NamedFormsetsMixin,                     CreateWithInlinesView):    title = 
"Inclua um cliente"    model = Client    #print('Chegou na linha 334')    
layout = Layout(        Fieldset("Inclua um cliente",                
 Row('name', ),                 Row('birthday','purchase_limit'),          
       Row('address1', ),                 Row('compra_sempre', ),          
       ),        Inline('Endereços', ItemInline),    )    #print('Chegou na 
linha 340')    def forms_valid(self, form, inlines):        new = 
form.save(commit=False)        new.save()        form.save_m2m()        
return super(NewClientsView, self).forms_valid(form, inlines)    def 
get_success_url(self):        return 
self.object.get_absolute_url()models.py*

# from django.contrib.auth.models import User
from django.db import models


class Person(models.Model):
    # class Meta:
    #     abstract = True

    name = models.CharField('Nome',max_length=100)
    birthday = models.DateField('Aniversário')
    address1 = models.CharField('Endereço 1',max_length=100)
    purchase_limit = models.DecimalField('Limite de compra',max_digits=15, 
decimal_places=2)


    class Meta:
        verbose_name_plural = 'pessoas'
        verbose_name = 'pessoa'

    def __str__(self):
        return self.name

    def get_child(self):
        if hasattr(self, 'client'):
            return self.client
        elif hasattr(self, 'employee'):
            return self.employee
        else:
            return None

def get_type(self):
    if hasattr(self, 'client'):
        return 'client'
    elif hasattr(self, 'employee'):
        return 'employee'
    else:
        return None


class Address(models.Model):
    KINDS_CHOICES = (
        ('P', 'PRINCIPAL'),
        ('C', 'COBRANÇA'),
        ('E', 'ENTREGA'),
    )

person = models.ForeignKey('Person')
kynd = models.CharField('Tipo', max_length=1, choices=KINDS_CHOICES)
public_place = models.CharField('Logradouro',max_length=150)
number = models.CharField('Número',max_length=150)
city = models.CharField('Cidade',max_length=150)
state = models.CharField('Estado',max_length=150)
zipcode = models.CharField('Cep',max_length=10)
country = models.CharField('País',max_length=150, choices=COUNTRY_CHOICES)
phone = models.CharField('Fone',max_length=50)

class Meta:
    verbose_name_plural = 'endereços'
    verbose_name = 'endereço'

def __str__(self):
    return self.public_place



class Client(Person):
    compra_sempre = models.BooleanField('Compra Sempre',default=False)

        def save(self, *args, **kwargs):
        super(Client, self).save(*args, **kwargs)

    class Meta:
        verbose_name = 'Cliente'
        verbose_name_plural = 'Clientes'



class Employee(Person):
    ctps = models.CharField('Carteira de Trabalho',max_length=25)
    salary = models.DecimalField('Salário',max_digits=15, decimal_places=2)


    def save(self, *args, **kwargs):
        # self.operacao = CONTA_OPERACAO_DEBITO
        super(Employee, self).save(*args, **kwargs)

    class Meta:
        verbose_name = 'Funcionário'
        verbose_name_plural = 'Funcionários'



But django always returns the error quoted in the title of the post

Believe me, I was able to simulate this in another project, and this one I 
can not replicate.

This is the link that works: https://github.com/CoutinhoElias/sosmypc

The URL is http://127.0.0.1:8000/site/profissoes/

And this is my project that I can not replicate: 
Https://github.com/CoutinhoElias/danibraz

All I want is something similar to the link below: 
http://demo.viewflow.io/materialforms/pro/signup/#python
My frustration is that I got involved in a project, but I can not do it now 
in the danibraz!
I do not know what I did differently!

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/50c5ef24-5f5c-4311-9adc-667b440ef9e8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to