У меня есть пользовательская модель с
class customuser(AbstractUser):
# additional fields
def __str__(self):
return self.username
У меня есть другая модель, которая становится внешним ключом для этой модели
class bfs_support_ticket_model(models.Model):
ticket_created_by = models.ForeignKey(customuser, on_delete = models.CASCADE)
Почему Django не отображает имя пользователя для формы, но отображает или возвращает имя пользователя везде правильно
class ticket_edit_form(ticket_create_form):
# ticket_created_by = forms.CharField(widget=forms.TextInput(attrs={'class' : 'form-control', 'readonly' : True})) # does not work in this way
def __init__(self, *args, **kwargs):
super(ticket_edit_form,self).__init__(*args, **kwargs)
# self.fields['ticket_created_by'].disabled = True
self.fields['ticket_created_by'].widget = forms.TextInput(attrs={'class' : 'form-control', 'readonly' : True}) # doesnot work in this way too
class Meta:
model=bfs_support_ticket_model
exclude=['ticket_last_updated_by']
Когда форма отображается, она просто печатает customuser.id
вместо customuser.username
Но когда инициализация формы не производится, она возвращаетcustomuser.username
правильно
т.е. когда
class ticket_edit_form(ticket_create_form):
def __init__(self, *args, **kwargs):
super(ticket_edit_form,self).__init__(*args, **kwargs)
self.fields['ticket_created_by'].disabled = True # only this line present it renders customuser.username
class Meta:
model=bfs_support_ticket_model
exclude=['ticket_last_updated_by']
Пожалуйста, помогите мне, где я иду не так
Редактировать: Почему
self.fields['ticket_created_by'].disabled = True # prints username
в то время как
self.fields['ticket_created_by'].widget = forms.TextInput(attrs={'class' : 'form-control', 'readonly' : True}) # this doesn't