2016-10-04 3 views
0

Я не уверен, как фильтровать раскрывающееся меню на основе идентификатора пользователя.Django - Как фильтровать раскрывающееся меню на основе идентификатора пользователя?

Не хочу для идентификатора пользователя 2.

enter image description here

Я хочу, чтобы в точности, как это для идентификатора пользователя 2.

enter image description here

Модель

@python_2_unicode_compatible # only if you need to support Python 2 
class PredefinedMessage(models.Model): 
    user = models.ForeignKey(User) 
    list_name = models.CharField(max_length=50) 
    list_description = models.CharField(max_length=50) 

    def __str__(self): 
     return self.list_name 

class PredefinedMessageDetail(models.Model): 
    predefined_message_detail = models.ForeignKey(PredefinedMessage) 
    message = models.CharField(max_length=5000) 

Посмотреть

class PredefinedMessageDetailForm(ModelForm): 
    class Meta: 
     model = PredefinedMessageDetail 
     fields = ['predefined_message_detail', 'message'] 
     exclude = ('user',) 

def predefined_message_detail_update(request, pk, template_name='predefined-message/predefined_message_detail_form.html'): 
    if not request.user.is_authenticated(): 
     return redirect('home') 
    predefined_message_detail = get_object_or_404(PredefinedMessageDetail, pk=pk) 
    form = PredefinedMessageDetailForm(request.POST or None, instance=predefined_message_detail) 
    if form.is_valid(): 
     form.save() 
     return redirect('predefined_message_list') 
    return render(request, template_name, {'form':form}) 

HTML файл

{% extends "base.html" %} 
{% load i18n %} 

{% block content %} 
<form method="post">{% csrf_token %} 
    {{ form.as_p }} 
    <input type="submit" value="Submit" /> 
</form> 
{% endblock %} 
+0

Просто настройте атрибут поля Queryset в ModelForm. – Rajesh

+0

как это сделать? –

ответ

1

Вы можете сделать это в самом виде, используя

form = PredefinedMessageDetailForm(request.POST or None, instance=predefined_message_detail) 
form.fields["predefined_message_detail"].queryset= PredefinedMessage.objects.filter(user=request.user) 

Но фильтрация происходит на основе request.user поэтому он должен быть вошедшего in.Consider, что также. Надеюсь, это поможет

+0

У меня есть объект «PredefinedMessageDetailForm», у которого нет сообщения об ошибке «predefined_message_detail» –

+0

Вы пробовали оба? 'form.fields [" predefined_message_detail "] = PredefinedMessage.objects.filter (user = request.user)' – itzMEonTV

+0

попробуйте оба, но все еще получил объект «PredefinedMessageDetailForm», не имеет атрибута «predefined_message_detail» –

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