У меня есть модель Access, которая связана с двумя другими моделями.
class Access (models.Model):
portfolio_id = models.ForeignKey(Portfolio)
user_id = models.ForeignKey(User)
title = models.CharField(max_length=30, null=True, blank=True)
access_rights = models.PositiveIntegerField(choices=ACCESS_CHOICES)
Я создал эту форму.
class UserAccessForm(forms.ModelForm):
class Meta:
model = Access
У меня есть это в представлении.
AccessFormSet = inlineformset_factory(Portfolio,
Access,
form=UserAccessForm,
extra=1,
can_delete=False)
cAccessFormSet = AccessFormSet(instance=cPorfolio)
Проблема находится на веб-странице, user_id отображается как поле выбора, дающее мне список всех моих пользователей (т.е. "jane15", "tom54"). Я хочу, чтобы это было текстовое поле, которое кто-то должен ввести в имени пользователя. Когда я пытаюсь настроить его, как показано ниже, он отображает «идентификаторы пользователя» вместо «имя пользователя» (т.е. «1», «2»).
class UserAccessForm(forms.ModelForm):
user_id = forms.ChoiceField(required=True, widget=forms.TextInput)
class Meta:
model = Access
Как заставить набор форм отображать и принимать имена пользователей (т.е. "jane15") как текстовое поле, а не как поле выбора?