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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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