Как убрать квадратные скобки при выводе элементов словаря в django
Я работаю над проектом django, в котором я сохраняю значения в базу данных экземпляра Model. Проект представляет собой парсер резюме, который, похоже, получает значения в виде словаря. Я успешно сохранил данные, но при рендеринге вывод выглядит не очень хорошо, поскольку он отображается с квадратными скобками и кавычками. Есть ли способ вывести их в виде списка? Вот мой models.py:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
avatar = models.ImageField(default='default.jpg', upload_to='profile_images')
bio = models.TextField()
resume = models.FileField('Upload Resumes', upload_to='resumes/', null=True, blank=True,default='resume.docx')
name = models.CharField('Name', max_length=255, null=True, blank=True)
email = models.CharField('Email', max_length=255, null=True, blank=True)
mobile_number = models.CharField('Mobile Number', max_length=255, null=True, blank=True)
education = models.CharField('Education', max_length=255, null=True, blank=True)
skills = models.CharField('Skills', max_length=1000, null=True, blank=True)
company_name = models.CharField('Company Name', max_length=1000, null=True, blank=True)
college_name = models.CharField('College Name', max_length=1000, null=True, blank=True)
designation = models.CharField('Designation', max_length=1000, null=True, blank=True)
experience = models.CharField('Experience', max_length=1000, null=True, blank=True)
total_experience = models.CharField('Total Experience (in Years)', max_length=1000, null=True, blank=True)
whatsapp = models.URLField(null=True, blank=True)
facebook = models.URLField(null=True, blank=True)
twitter = models.URLField(null=True, blank=True)
linkedin = models.URLField(null=True, blank=True)
languages = models.CharField(max_length=1000, null=True, blank=True)
profession = models.CharField(max_length=100, null=True, blank=True)
nationality = models.CharField(max_length=100, null=True, blank=True)
def __str__(self):
return self.user.username
Мой views.py
@login_required
def myprofile(request, user_id):
profile = Profile.objects.get(id=user_id)
context = {'profile':profile}
return render(request, 'user/profile.html', context)
Шаблон;
{% for skill in user.profile.skills %}
{{skill}}
{% endfor %}
А вот как они отображаются:
[ ' S y s t e m ' , ' S p a n i s h ' , ' P u b l i c r e l a t i o n s ' , ' E n g l i s h ' , ' A d v e r t i s i n g ' , ' A d m i n i s t r a t i o n ' , ' D e p o s i t s ' , ' R e s e a r c h ' , ' P h o t o s h o p ' , ' C o m m u n i c a t i o n ' , ' E x c e l ' , ' W o r d ' , ' P o w e r p o i n t ' , ' N e w s p a p e r ' , ' M a r k e t i n g ' ]
Я пробовал использовать ', '.join()
, но все равно он не отображает их в виде списка
Поле 'skills' в вашей модели 'Profile' является символьным полем. Это означает, что оно используется для хранения строковых значений. Чтобы иметь возможность хранить несколько навыков, связанных с профилем, вам следует попробовать реализовать отдельный класс модели для навыков.
В файле models.py определите новую модель (не забудьте удалить поле skills из модели Profile) :
class Skills(models.Model):
skill= models.CharField(max_length=1000, null=True, blank=True)
profile_id = models.ForeignKey(Profile, null=True, on_delete=models.SET_NULL)
Каждый раз, когда вы создаете новый объект профиля, обновляйте навыки, связанные с этим профилем, перед их сохранением. Теперь, чтобы навыки правильно выводились в шаблоне, ваш views.py может выглядеть следующим образом:
@login_required
def myprofile(request, user_id):
profile = Profile.objects.get(id=user_id)
profile_skills = Skills.objects.get(profile_id=profile.id)
context = {'profile':profile, 'skills': profile_skills}
return render(request, 'user/profile.html', context)
Теперь ваш шаблон, очевидно, будет выглядеть следующим образом:
{% for skill in skills %}
{{skill}}
{% endfor %}