I want to show a dropdown in Django Form where the dropdown items are specified in another model in another app. Here's what I mean:
title/models.py
TITLE_CHOICES = (
    ('MR', 'Mr'),
    ('MS', 'Ms'),
    ('MISS', 'Miss'),
    ('MRS', 'Mrs'),
    ('MX', 'Mx'),
)
class Title(models.Model):
    title_name = models.CharField(max_length=10, choices=TITLE_CHOICES)
    def __str__(self):
        return self.title_name
user/models.py
class User(models.Model):
    ...
    user_title = models.ForeignKey('title.Title', on_delete=models.CASCADE)
    ...
user/forms.py
class SignupForm(forms.ModelForm):
        user_title = forms.ModelChoiceField(queryset=Title.objects.all())
        class Meta:
            model = User
            fields = '__all__'
        def signup(self, request, user): #this is to override the **allauth** signup form
            user.user_title = self.cleaned_data['title_name']
            ...
            ...
            user.save()
With the above code, the dropdown field renders properly; however, it is empty.

Any ideas or suggestions are greatly appreciated.
Thanks.
Please change your user_title field to this and Try this.
user_title = forms.ModelChoiceField(queryset=Title.objects.all(), widget=forms.Select(attrs={'class': 'form-control'}))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With