2012-08-22 4 views
0

내 모델 중 하나에 대한 편집보기가 있습니다.양식을 편집하여 양식 값이로드되지 않습니다.

@login_required   
def edit(request, id): 
    ''' Edit form ''' 
    if id: 
     post = get_object_or_404(Post, pk=id) 
     if post.user != request.user: 
      return HttpResponseForbidden() 
    else: 
     post = Post() 

    if request.POST: 
     form = PostForm(request.POST, instance = post) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect(reverse('posts_manage')) 
    else: 
     form = PostForm(instance = post) 

    return render_to_response('posts/add.html', {'form':form}, context_instance=RequestContext(request)) 

모든 모든 포스트 정보를 제대로 넣었는지, 잘 작동하지만, select 박스 필드, 하나는 DB에서 얻은 값으로 선택되지 않습니다. 다른 선택 상자는 적절한 값으로 선택됩니다.

모델 정의 적절히 채워지되지 필드 : add.html 내부

class Post(models.Model): 
    ... 
    BATHROOM_CHOICES = ((1,'1'),(1.5,'1.5'),(2,'2'),(2.5,'2.5'),(3,'3'),(3.5,'3.5'),(4,'4'), (4.5,'4.5'),(5,'5+')) 
    bathrooms = models.DecimalField(max_digits = 2,decimal_places = 1,choices = BATHROOM_CHOICES) 

관련 섹션

{{ form.bathrooms|bootstrap}} 

forms.py

class PostForm(ModelForm): 
    class Meta: 
     model = Post 
     exclude = ('available','user',) 

    def __init__(self, *args, **kwargs): 
     self.request = kwargs.pop('request', None) 
     return super(PostForm, self).__init__(*args, **kwargs) 

    def save(self, *args, **kwargs): 
     kwargs['commit'] = False 
     obj = super(PostForm, self).save(*args, **kwargs) 
     if self.request: 
      obj.user = self.request.user 
     obj.save() 
     return obj 
+0

무엇 내부에'게시물/add.html'? – girasquid

+0

해당 필드의 간단한 {{form.bathrooms | bootsrap}} ... – AlexBrand

+0

부트 스트랩 필터 란 무엇입니까? 그것은 무엇을합니까? 그거 어디서 났어? – girasquid

답변

2

데이터 DB에서 선택에 의해 일치하지 않습니다 BATHROOM_CHOICES

BATHROOM_CHOICES = ((1,'1'),(1.5,'1.5'),(2,'2'),(2.5,'2.5'),(3,'3'),(3.5,'3.5'),(4,'4'), (4.5,'4.5'),(5,'5+'))models.DecimalField(max_digits = 2,decimal_places = 1, 은 모순됩니다.

모델 정의에서 모든 값의 소수점 자리는 1 이상이며 DB (어댑터 구현에 따라 다름)의 1에서 1.0까지의 정수와 같은 값을 추정합니다.

그러면 값이 1 !== 1.0과 일치하므로 값을 선택하지 않습니다.

가능한 수정 : BATHROOM_CHOICES = ((1.0,'1'),(1.5,'1.5'),(2.0,'2'),(2.5,'2.5'),(3.0,'3'),(3.5,'3.5'),(4.0,'4'), (4.5,'4.5'),(5.0,'5+'))

+0

천재! 일했다. – AlexBrand

+0

당신은 환영합니다, 나는 완전히 다른 솔루션을 작성하기 시작했습니다. 그리고 그것은 타이핑 문제였습니다. –

관련 문제