我正在一个django项目中工作,我正在将值保存到模型实例的数据库中。该项目是一个简历解析器,似乎是得到的值作为一个字典。我已经成功地保存了数据,但是当渲染输出时,它看起来不太好,因为它用方括号和引号渲染。有一种方法,我可以渲染他们作为一个列表?这是我的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()
,但它仍然没有渲染它们作为列表
您的'Profile'模型中的'skills'字段是一个字符字段。因此,这意味着它的用途是存储字符串值。为了能够存储与概要文件相关联的多个技能,您应该尝试实现为技能使用单独的模型类。
在models.py文件,定义新模型(确保从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 %}