2013-07-21 3 views
2

Если я использую типовые формы, где мой views.py выглядит следующим образом:Доступ в ModelForm

def dog_image_upload(request): 
    if request.user.is_authenticated(): 
     if request.method == 'POST': 
      form = DogImageForm(request.POST, request.FILES) 
      if form.is_valid(): 
       form.save() 
     else: 
      form = DogImageForm(user) 
     return render_to_response("dog-image-upload.html", {'form': form}, context_instance=RequestContext(request)) 
    else: 
     return HttpResponseRedirect('/') 

И model.py я хочу сделать это:

class DogImageForm(ModelForm): 
    dogs = forms.ModelChoiceField(queryset=Dog.objects.filter(user=request.user)) 
    class Meta: 
     model = ResultsUpload 
     fields = ['dogs','image'] 

Однако, У меня возникли проблемы с попыткой отправить пользователя на model.py Помощь по этому вопросу была бы удивительной и достойной!

ответ

6

Вы должны сделать это в ModelForm-х __init__

class DogImageForm(ModelForm): 
    dogs = forms.ModelChoiceField(queryset=Dog.objects.none()) 
    class Meta: 
     model = ResultsUpload 

    def __init__(self, user, *args, **kwargs): 
     super(DogImageForm, self).__init__(*args, **kwargs) 
     self.fields['dogs'].queryset = Dog.objects.filter(user=user) 

и во время инициализации формы,

form = DogImageForm(user=request.user) 
+0

Большое спасибо за вашу помощь, его работы с раствором без ошибок сейчас , однако в списке нет значений. Это из-за того, что запрос не находит значения для возврата? –

+1

да, чтобы убедиться, что в оболочке django запустите этот запрос ('Dog.objects.filter (user = user)') с указанным пользователем – karthikr

+1

Ahh noob ошибка моя проблема 'request.user' от' django .contrib.auth.models импортировать пользователя, где поле пользователя в модели «Собака» является ссылкой на другую модель «UserProfile». Я должен быть лучше с моими именами переменных. Спасибо @karthikr, я не мог понять решения других людей по этой проблеме, ваш потрясающий. –

Смежные вопросы