ModelForm에서 필드를 필터링하려고합니다. 내보기에 대한 일반 CreateView 서브 클래 싱입니다. 웹에서 내 문제에 대한 많은 참조를 찾았지만 솔루션은 Django 1.3의 클래스 기반보기에서 작동하지 않습니다. 여기 Django 1.3 CreateView, ModelForm 및 request.user별로 필드 필터링
내 모델이다 : 여기#models.py
class Subscriber(models.Model):
user = models.ForeignKey(User)
subscriber_list = models.ManyToManyField('SubscriberList')
....
class SubscriberList(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=70)
....
내이다 : 여기
#views.py
class SubscriberCreateView(AuthCreateView):
model = Subscriber
template_name = "forms/app.html"
form_class = SubscriberForm
success_url = "/app/subscribers/"
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.user = self.request.user
return super(SubscriberCreateView, self).form_valid(form)
인 필터없이, 가입자를 추가 내 원래 형태 : 여기
#forms.py
class SubscriberForm(ModelForm):
class Meta:
model = Subscriber
exclude = ('user', 'facebook_id', 'twitter_id')
필터링을 시도했지만 작동하지 않는 수정 된 양식입니다.
#forms.py
class SubscriberForm(ModelForm):
class Meta:
model = Subscriber
exclude = ('user', 'facebook_id', 'twitter_id')
def __init__(self, user, **kwargs):
super(SubscriberForm, self).__init__(**kwargs)
self.fields['subscriber_list'].queryset = SubscriberList.objects.filter(user=user)
나는 그래서이 수정 된 형태를 변경하는 경우 :
def __init__(self, user=None, **kwargs)
의미가 있습니다 - 그것은 나에게 NO 가입자 목록을 제공합니다. 그러나 요청 사용자를 전달하려고 시도하는 어떤 방법으로도 나는 항상 "요청"이름 또는 "자체"이름이 정의되지 않은 오류 메시지를받습니다.
그렇다면 request.user를 통해 subscriber_list를 필터링하고 Django 1.3의 CreateView를 사용하는 코드를 수정하려면 어떻게해야합니까?
: 나는 특정 양식 필드의 검색어 필터링 FormMixin에서 get_form()를 덮어 내 정확한 질문에 대답 보는 것이 아주 좋은,하지만 approximatively로부터 답 날짜를보고 나는 똑같은 질문을했다. – makapuf
이것도 나에게 도움이되었다 ... 여기, upvote –
왜 이것이 정답으로 선택되지 않습니까? – MiniGunnR