Skip to content

Instantly share code, notes, and snippets.

@mercutio22
Created October 17, 2012 23:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mercutio22/3909024 to your computer and use it in GitHub Desktop.
Save mercutio22/3909024 to your computer and use it in GitHub Desktop.
UpdateView woes
#encoding=utf-8
from django import forms
from django.contrib.localflavor.br.forms import (
BRCPFField,
BRCNPJField,
BRZipCodeField,
BRPhoneNumberField, #dígitos dos celulares de SP precisam de nova validação
BRStateSelect,
)
from .models import Membro
#class MembroForm(forms.ModelForm):
# class Meta:
# model = Membro
class MembroForm(forms.Form):
#TODO, descobrir se é possível implementar uma condição para escolher CPF ou CNPJ
#documento = BRCPFField()
#telefone = BRPhoneNumberField() #TODO: implementar um modelField customizado para acomodar SP.
#cep = BRZipCodeField()
logradouro = forms.CharField(max_length=64)
complemento = forms.CharField(max_length=32)
bairro = forms.CharField(max_length=32)
cidade = forms.CharField(max_length=32)
#uf =forms.CharField(max_length=4, widget=BRStateSelect,)
#class Meta:
# model = Membro
#encoding=utf-8
from django.db import models
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from django.db.models.signals import post_save
TIPOS_DE_PLANO = [
('MESA', u'Mesa compartilhada'),
('SALA', u'Sala'),
('CONTATO', u'Contato'),
]
UNIDADES_DE_PLANO = [
('HORA', u'Hora'),
('MES', u'Mês'),
]
# Informações adicionais de um usuario
class Membro(models.Model):
user = models.OneToOneField(User)
nome_completo = models.CharField(u'nome',db_index=True, max_length=64)
documento = models.CharField(max_length=16)
telefone = models.CharField(db_index=True, max_length=32)
cep = models.CharField(max_length=16)
logradouro = models.CharField(u'endereço',max_length=64)
complemento = models.CharField(max_length=32, blank=True)
bairro = models.CharField(max_length=32)
cidade = models.CharField(max_length=32)
uf = models.CharField(max_length=4)
#TODO: adicionar um slugfield
@models.permalink
def get_absolute_url(self):
return ('membro-detalhe', [str(self.id)]) #parâmetro 1 --> url nomeada
# Vincula as informações de um Membro ao um Usuario
def create_member_profile(sender, instance, created, **kwargs):
if created:
Membro.objects.create(user=instance)
post_save.connect(create_member_profile, sender=User)
Environment:
Request Method: GET
Request URL: http://localhost:8000/membro/atualiza/1/
Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'registration',
'portal',
'contas',
'south')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/home/nurf/gitcode/openshift/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "/home/nurf/gitcode/openshift/venv/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
20. return view_func(request, *args, **kwargs)
File "/home/nurf/gitcode/openshift/venv/local/lib/python2.7/site-packages/django/views/generic/base.py" in view
48. return self.dispatch(request, *args, **kwargs)
File "/home/nurf/gitcode/openshift/venv/local/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
69. return handler(request, *args, **kwargs)
File "/home/nurf/gitcode/openshift/venv/local/lib/python2.7/site-packages/django/views/generic/edit.py" in get
191. return super(BaseUpdateView, self).get(request, *args, **kwargs)
File "/home/nurf/gitcode/openshift/venv/local/lib/python2.7/site-packages/django/views/generic/edit.py" in get
131. form = self.get_form(form_class)
File "/home/nurf/gitcode/openshift/venv/local/lib/python2.7/site-packages/django/views/generic/edit.py" in get_form
34. return form_class(**self.get_form_kwargs())
Exception Type: TypeError at /membro/atualiza/1/
Exception Value: __init__() got an unexpected keyword argument 'instance'
# coding: utf-8
from django.conf.urls import patterns, include, url
from django.views.generic.simple import direct_to_template
from django.contrib import admin
from django.dispatch import receiver
from django.contrib.auth import views as auth_views
from registration.forms import RegistrationFormTermsOfService
from registration.forms import RegistrationFormUniqueEmail
from registration.views import activate
from registration.views import register
from django.views.generic import detail
from django.views.generic.edit import UpdateView
from django.contrib.auth.decorators import login_required
from .models import Membro
from .views import AtualizaMembro
from .forms import MembroForm
urlpatterns = patterns('contas.views',
url(r'^membro/(?P<pk>\d+)/$', detail.DetailView.as_view(
model=Membro,
context_object_name='membro',
template_name='contas/membro_detalhe.html',
),
name='membro-detalhado'),
url(r'^membro/atualiza/(?P<pk>\d+)/$',
#r'^membro/atualiza/$',
login_required(AtualizaMembro.as_view()),
name='atualiza-membro')
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment