01-04-2010 20:46, Halil İbrahim YILMAZ yazmış:
> Merhaba ModelForm ile oluşturduğum alanlarda filtreleme yapmak istiyorum
> ancak bir türlü beceremedim. Acaba bunun için bulabileceğim bir örnek
> mevcut mudur?
> Aşağıdaki şekilde bir view'a sahibim:
>
> def ziyaret_ekle(request):
>       if request.POST:
>           zform = ZiyaretForm(request.POST)
>           if form.is_valid():
>               yeni_ziyaret_objesi = form.save(commit = False)
>               yeni_ziyaret_objesi.temsilci = request.user
>               yeni_ziyaret_objesi.save()
>               return HttpResponse("Veritabanina kaydedildi. Yeni
> ziyaretin id'si : %d" % yeni_ziyaret_objesi.pk)
>           else:
>               render_to_response('ziyaret_kaydet.html', {'zform': zform},
> context_instance=RequestContext(request))
>       return render_to_response('ziyaret_kaydet.html', {'zform':
> ZiyaretForm()}, context_instance=RequestContext(request))
>
> Aşağıdaki şekilde yapmayı denedim ancak hata vermemesine karşın tüm
> listeyi alıyorum. oysa ben sadece o userın temsilcisi olduğu müşteriyi
> çekmek istiyorum
> zform = ZiyaretForm(request.POST,
> queryset=Musteri.objects.filter(temsilci = request.user))
>
> Saygılarımla.
> _______________________________________________
> Linux-programlama mailing list
> Linux-programlama@liste.linux.org.tr
> https://liste.linux.org.tr/mailman/listinfo/linux-programlama
> Liste kurallari: http://liste.linux.org.tr/kurallar.php
>    
Merhaba, Model yapımı ve view yapımı Özgür Bey'in yardımı ile aşağıdaki 
şekilde değiştirdim,
from django.db import models
from django.forms import *
from yenicrm.musteri.models import *
from django.contrib.auth.models import User
from django.forms.extras.widgets import *

# Create your models here.
class Ziyaret(models.Model):
     tarih = models.DateField()
     temsilci = models.ForeignKey(User)
     musteri = models.ForeignKey(Musteri)
     gorusler = models.TextField()

class ZiyaretForm(ModelForm):
   tarih = DateField(widget=SelectDateWidget())
   musteri = ModelChoiceField(queryset = Musteri.objects.none())

   def __init__(self, temsilci = None, *args, **kwargs):
       super(ZiyaretForm, self).__init__(*args, **kwargs)
       self.fields["musteri"] = Musteri.objects.none() if temsilci is 
None else Musteri.objects.filter(temsilci = temsilci)

   class Meta:
       model = Ziyaret
       exclude = ("temsilci",)

View.py ise aşağıdaki gibidir:

from django.shortcuts import render_to_response
from django import forms
from yenicrm.musteri.models import *
from yenicrm.ziyaret.models import *
from django.contrib.auth.decorators import login_required
from django.template import Context, RequestContext
from django.http import HttpResponse

@login_required
def index(request):
     ziyaretler = Ziyaret.objects.filter(temsilci = request.user)
     return render_to_response('ziyaret.html', {'ziyaretler': ziyaretler})

@login_required
def ziyaret_ekle(request):
     if request.POST:
         zform = ZiyaretForm(request.POST)
         if form.is_valid():
             yeni_ziyaret_objesi = form.save(commit = False)
             yeni_ziyaret_objesi.temsilci = request.user
             yeni_ziyaret_objesi.save()
             return HttpResponse("Veritabanina kaydedildi. Yeni 
ziyaretin id'si : %d" % yeni_ziyaret_objesi.pk)
         else:
             render_to_response('ziyaret_kaydet.html', {'zform': zform}, 
context_instance=RequestContext(request))
     return render_to_response('ziyaret_kaydet.html', {'zform': 
ZiyaretForm()}, context_instance=RequestContext(request))

Herhangi bir değişiklik yapmadan {{zform.as_table}} diyerek çağırdığımda 
formu göremiyorum. view içinde zform = ZiyaretForm(request.POST, 
temsilci = request.user) ve/veya     return 
render_to_response('ziyaret_kaydet.html', {'zform': ZiyaretForm(temsilci 
= requst.user)}, context_instance=RequestContext(request)) şeklinde 
çağırdığımda da form görünmüyor. Tıkandım kaldım, ne yapabilirim?
Saygılar.
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap