Django / Хрустящие формы: отображать имя пользователя вместо имени пользователя в отображаемой форме - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть модель, которая использует User модель как ForeignKey(). Однако, когда я отображаю форму с помощью Crispy Forms, в поле выбора shared_with отображаются имена пользователей. Как я могу изменить это на user.firstname вместо user.username? Нужно ли менять queryset этого поля?

models.py

class box_items(models.Model):
owner = models.ForeignKey(User, on_delete=models.PROTECT, related_name='OwnerToUser')
shared_with = models.ForeignKey(User, on_delete=models.PROTECT, related_name='SharedToUser',null=False)
tags = models.ManyToManyField(box_tags, blank=True)
name = models.CharField(max_length=140, blank=False)
description = models.TextField(blank=True)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

forms.py

class item_form(forms.ModelForm):
tags = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple(),required=False,queryset=box_tags.objects.order_by('name'))

def __init__(self, *args, **kwargs):
  self.user = kwargs.pop('current_user', None) #ERROR HANDLING!!!
  super(item_form, self).__init__(*args, **kwargs)

  self.helper = FormHelper()
  self.helper.form_class = 'form-horizontal'
  self.helper.label_class = 'col-md-2'
  self.helper.layout = Layout(
    Submit('submit', 'Speichern'),
    CustomTags('tags'),
    'shared_with',
    'name',
    'description',
    Submit('submit', 'Speichern')
  )
...