Что противоположно статическому?

В дополнение к ответу С.Лотта и, как упоминается в комментариях к Guru, его можно добавить фильтры выбора запроса, переопределив функцию ModelForm.__init__. (Это может быть легко применимо к обычным формам), это может помочь в повторном использовании и сохраняет функцию обзора в порядке.

class ClientForm(forms.ModelForm):
    def __init__(self,company,*args,**kwargs):
        super (ClientForm,self ).__init__(*args,**kwargs) # populates the post
        self.fields['rate'].queryset = Rate.objects.filter(company=company)
        self.fields['client'].queryset = Client.objects.filter(company=company)

    class Meta:
        model = Client

def addclient(request, company_id):
        the_company = get_object_or_404(Company, id=company_id)

        if request.POST:
            form = ClientForm(the_company,request.POST)  #<-- Note the extra arg
            if form.is_valid():
                form.save()
                return HttpResponseRedirect(the_company.get_clients_url())
        else:
            form = ClientForm(the_company)

        return render_to_response('addclient.html', 
                                  {'form': form, 'the_company':the_company})

Это может быть полезно для повторного использования, если у вас есть общие фильтры, необходимые для многих моделей (обычно я объявляю абстрактный класс формы). Например,

class UberClientForm(ClientForm):
    class Meta:
        model = UberClient

def view(request):
    ...
    form = UberClientForm(company)
    ...

#or even extend the existing custom init
class PITAClient(ClientForm):
    def __init__(company, *args, **args):
        super (PITAClient,self ).__init__(company,*args,**kwargs)
        self.fields['support_staff'].queryset = User.objects.exclude(user='michael')

Кроме этого, я просто переписываю материал блога Django, из которого есть много хороших.

24
задан Daniel Hilgarth 9 June 2011 в 13:29
поделиться

2 ответа

«Экземпляр» обычно - «методы экземпляра», «переменные экземпляра» и т. Д. Нестатические тоже работают, если вы находите это проще.

Я не уверен, что действительно поместил бы все эти регионы в ...

31
ответ дан Jon Skeet 9 June 2011 в 13:29
поделиться

Нестатический будет правильным. Слово «экземпляр» чаще используется для описания конкретного вхождения объекта или класса в памяти.

1
ответ дан Keegan Teetaert 9 June 2011 в 13:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: