2013-07-23 3 views
3

this question과 매우 유사하지만 허용 된 답변을 시도했지만 제대로 작동하지 않았습니다. 여기에 무슨 일이 일어나고 있는지. 나는 사용자가 원하는Django에서 여러 개의 확인란을 미리 선택하는 경우

class Photo(models.Model): 
    user = models.ForeignKey(User) 
... 

class Person(models.Model): 
    user = models.ForeignKey(User) 
    photos = models.ManyToManyField(Photo) 
... 

forms.py

class TaggingForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     queryset = kwargs.pop('queryset') 
     super(TaggingForm, self).__init__(*args, **kwargs) 
     self.fields['people'] = forms.ModelMultipleChoiceField(required=False, queryset=queryset, widget=forms.CheckboxSelectMultiple) 
... 

models.py :

나는이 보이는 사진에서 사용자를 태그에 대한 양식을 가지고 처음 태그를 지정한 후 사진에서 태그를 편집 할 수 있어야합니다. 그래야 g 페이지를 볼 수 있습니다. o 단일 사진을보고 태그를 편집합니다. 분명한 이유로 이미 태그가 지정된 개인의 확인란을 미리 선택하고 싶습니다. 나는 폼의 초기 사전에 위의 링크 된 질문에 대한 대답과 같이 내가 원하는 사람의 목록을 제공하여이 작업을 시도했습니다.

def photo_detail(request,photo_id): 

    photo = Photo.objects.get(id=photo_id) 

    initial = {'photo_id':photo.id, 'people':[p for p in photo.person_set.all()]} 
    form_queryset = Person.objects.filter(user=request.user) 

    if request.method == "POST": 
     form = TaggingForm(request.POST, queryset=form_queryset) 
     # do stuff 
    else: 
     form = TaggingForm(initial=initial, queryset=form_queryset) 
... 

나는 위의 코드와 같이 사람들을 초기화하려고 views.py는, 형태는 표시되지 않습니다,하지만 오류 중 하나를 발생하지 않습니다. "사람"키/값 쌍을 초기 사전에서 꺼내면 양식이 잘 보이지만 사람을 확인하지는 않습니다. 또한 중요한 경우 Django 1.5 사용하고 있습니다. 미리 감사드립니다.

+0

도움이 될 것이라고 생각합니다. http://stackoverflow.com/questions/604266/django-set-default-form-values ​​ –

+0

나는 뭔가를 놓친 것입니까? 그 대답은 이미 설정 한 초기 값의 개념을 소개하는 것 같습니다. 그것은 작동하지 않는 체크 박스의 초기 값일 뿐이므로 검사 할 객체의 목록이 아닌 경우 무엇을 주어야할지 모르겠다. – snorthway

+0

django 폼을 사용하여 설정 초기 값을 사용하지 않는 이유는 무엇입니까? 그게 내가 뭘하려고했는지. –

답변

2

당신이 할 수있는 일은 단순히 장고 양식을 사용하여이 모든 것을 처리하는 것입니다. 이 내용은 question을 참조하십시오. 이상적으로는 djnago가 양식과 유효성 검증 및 초기 값을 처리하게하는 것이 가장 이상적입니다.

이제 실제로 익숙해지는 것이 정말 좋습니다. 모든 논리와 프레젠테이션을 해부합니다. 그것의 훌륭한 건조 원칙.

관련 문제