2011-11-14 2 views
2

장고 양식을 작성 중입니다.외래 키로 장고 양식에 대한 질문이 없음

내 모델은 고객에게 희망 목록이 있다는 것입니다. 고객은 많은 희망 목록 항목을 가질 수 있습니다. 고객보기에서 희망 목록 항목을 추가합니다. 내 문제는 내가 원하는 목록 양식을 렌더링 할 때 모든 고객에게 드롭 다운이 있다는 것입니다. t을 설정하여 드롭 다운을 제거했습니다. 하지만 이제는 편집 할 수없는 항목을 양식에 표시하려고합니다. 제출할 때 편집 할 수없는 값을 다시 전달하십시오.

내가 할 수 Wishlist.customer에 false로 편집 가능한 설정 한 경우 :

  1. 세트 뷰에서이 값이 표시 목적으로 만 HTML로 전달할?

  2. 편집 할 수없는 wishlist.customer가 처리를 위해 양식 제출에 다시 전달 되었습니까?

--------- models.py ------------

class WishList(models.Model): 
    customer = models.ForeignKey(Customer, editable=False) 
    year = models.CharField(max_length=4, blank=True) 
    item = models.CharField(max_length=20, blank=True) 
    color = models.CharField(max_length=20, blank=True) 
    sold = models.BooleanField(default=False) 

-------- forms.py - -----------

class WishListForm(forms.ModelForm): 
    class Meta: 
     model = WishList 
     fields = ['carType', 'year', 'make', 'model', 'miles', 'color', ] 

-------- views.py -------------

@login_required 
def newWishList(request, customer_id): 
    cust = Customer.objects.get(pk=customer_id) 
    return handlePopAdd(request, WishListForm, cust, 'wishList') 

def handlePopAdd(request, addForm, customer, field): 
    if request.method == "POST": 
     form = addForm(request.POST) 
     if form.is_valid(): 
      newObject = form.save() 
    else: 
     form = addForm() 
     # Here I want to set the customer and have it displayed, not editable 
     form.customer=customer 
    pageContext = {'form': form, 'field': field} 
    return render_to_response("popuptemplate.html", pageContext) 

답변

0

우선 , 폼 정의에 오타가있는 것 같습니다. fields 대신 felds을 읽습니다. 또한 코드에서 볼 수없는 일부 필드 이름도 나열되어 있으므로이 스 니펫을 기반으로하지는 않을 것입니다.

내가 할 수있는 것은 ModelForm에 편집 가능한 필드를 나열하는 것입니다 (현재 이미 수행 한 것처럼). 그런 다음 고객 필드를 포함 시키되 윤곽이 표시된 here과 같은 표시 속성을 재정의합니다. readonly 속성 세트가있는 CharField입니다.

또 다른 옵션 (개인적으로 선호)은 고객을 양식에서 완전히 제외시키고 양식에 고객 이름을 전혀 표시하지 않고 템플릿에 렌더링하는 것입니다. 양식 위에 헤더 태그와 같은 항목을 넣으면 데이터가 어떤 고객인지 명확히 알 수 있습니다.