2012-12-09 1 views
0

안녕하세요. 기존 레코드를 업데이트하고 있지만 그럴 때마다 Truncated incorrect DOUBLE value: 'user1' 내보기 및 모델을 여기에 붙여 넣습니다. 위의에서보기django의 모델 양식을 사용하여 레코드 업데이트

def editbasicdetails(request): 
    if request.method == 'POST': 
     username = User.objects.filter(username = request.user) 
     instance = get_object_or_404(User, username = username) 
     form = EditBasicDetailsForm(request.POST,instance=instance) 
     if form.is_valid(): 
      form.save() 
     return HttpResponseRedirect('/myprofile/') 
    else: 
     form = EditBasicDetailsForm(request.user) 
    return shortcuts.render_to_response('editbasicdetails.html',locals(), 
            context_instance = context.RequestContext(request)) 

모델 양식

class EditBasicDetailsForm(forms.ModelForm): 
    def __init__(self,user, *args, **kwargs): 
     super(EditBasicDetailsForm, self).__init__(*args, **kwargs) 

     userid = User.objects.filter(username = user).values('id')[0].get('id') 
     self.fields['username'] = forms.CharField(initial = user, 
               widget = forms.TextInput(attrs = {'readonly':'readonly'})) 
    class Meta: 
     model = BasicDetails 

class BasicDetails(models.Model): 
    username = models.OneToOneField(User) 
    name = models.CharField(max_length = 100, verbose_name = "Name") 
    sex = models.CharField(max_length = 10, verbose_name = "Sex", choices = GENDER_CHOICES) 
    dob = models.DateField(verbose_name = "Date of Birth") 

    class Meta: 
     db_table = u'wed_basicdetails' 
    def __unicode__(self): 
     return u'%s' % (self.username) 

모델

나에게 도와주세요 보기, 나는 사용자 이름을 그냥 지나치지 않고 있습니다. request.user에서 사용자 이름 값을 얻고 있습니다.이 간단한 기능을 잘못 이해하고 있습니다.

-Vikram

답변

1

이 오류는 아마 양식 WRT 모델의 일관성없는 행동과 관련이있다. 이후 데이터베이스는 OneToOneField를 정수로 저장하고 CharField는 varchar로 저장합니다.

메서드를 재정의 할 필요가 없습니다. 당신은 초기 인수로 직접 할 수 있습니다.

form = EditBasicDetailsForm(initial = {'username' : request.user) 

업데이트 :

보기 코드에서

난 당신이 제대로 문 HttpResponseRedirect를 당신이 의도하는 것이 좋습니다 것입니다. 그렇지 않으면 양식이 유효하면 다시 표시되지 않습니다.

if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/myprofile/') 
+0

Hi Raunak, 내가 양식을 변경하길 원하십니까? 위의 줄을 if 조건에 추가했지만 오류가 계속 발생합니다. – vkrams

+0

그래야 __init__ 메서드를 제거하고 다시 시도 할 수 있습니다! –

+0

데이터베이스에서 기존 값을 검색하기 위해 init 메소드를 사용하고 있습니다. 위의 질문에서 폼에 사용자 이름 만 게시했지만 모든 필드는'self.fields [ 'fieldname']' – vkrams

관련 문제