Nurdin
Nurdin

Reputation: 23893

Django - How to filter dropdown based on user id?

I'm not sure how to filter dropdown based on user id.

Not I want for user id 2.

enter image description here

I want exactly like this for user id 2.

enter image description here

Model

@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)

View

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 file

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

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

Upvotes: 0

Views: 614

Answers (1)

itzMEonTV
itzMEonTV

Reputation: 20349

You can do it in view itself using

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

But filtering happens based on request.user so it should be logged in.Consider that also. Hope this helps

Upvotes: 1

Related Questions