Django 如何将MultipleChiceField保存到db
我想创建一个设置页面,用户可以在其中选择多个技能值。它将有一个主类别,然后是子类别。我需要将它们保存到我的数据库中,以便查询它们并再次显示它们所选的技能集 我知道如何创建multipleechoicefield,但不知道如何将它们保存到数据库中。我该怎么说呢 Forms.pyDjango 如何将MultipleChiceField保存到db,django,database,Django,Database,我想创建一个设置页面,用户可以在其中选择多个技能值。它将有一个主类别,然后是子类别。我需要将它们保存到我的数据库中,以便查询它们并再次显示它们所选的技能集 我知道如何创建multipleechoicefield,但不知道如何将它们保存到数据库中。我该怎么说呢 Forms.py from django import forms class skills(forms.Form): jobs = [ ('Håndværker', ( ('Gulv', 'Gu
from django import forms
class skills(forms.Form):
jobs = [
('Håndværker', (
('Gulv', 'Gulv'),
('Væg', 'Væg'),
)
),
('Murer', (
('Mur', 'Mur'),
('blabla', 'blabla'),
)
),
]
job = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
choices=jobs)
Views.py
from .forms import skills
def index(request):
if request.method == 'POST':
form = skills(request.POST)
if form.is_valid():
picked = form.cleaned_data.get('job')
# do something with your results
else:
form = skills
return render(request, 'settings/index.html', {"form":form})
当前页面加载时是这样的,这很好。下一步就是如何将其保存到数据库中,这样我就可以再次显示它们以前选择的值。
由于您还没有任何模型设置,您可以查看,它将所选选项存储为“逗号分隔值的字符域”。然后您只需要从表单中传递这些值
或者你也可以研究一下 我建议您拥有
工作
模式和技能
模式。然后在工作模型上有一个技能字段,它将是技能模型的ManyToManyField
。Django随后可以将此表单自动生成为ModelForm
# Create your models here.
class Skill(models.Model):
name = models.CharField(max_length=20, null=False, blank=False)
def __str__(self):
return self.name
class Job(models.Model):
name = models.CharField(max_length=20, null=False, blank=False)
skills = models.ManyToManyField(Skill)
def __str__(self):
return self.name
class Person(models.Model):
name = models.CharField(max_length=20, null=False, blank=False)
skills = models.ManyToManyField(Skill)
def __str__(self):
return self.name
然后,您可以将它们添加到数据库中,如下所示
skill1 = Skill.objects.create(name="Skill One")
skill2 = Skill.objects.create(name="Skill Two")
skill3 = Skill.objects.create(name="Skill Three")
skill4 = Skill.objects.create(name="Skill Four")
job1 = Job.objects.create(name="Job One")
job1.skills.add(skill1)
job1.skills.add(skill2)
job2 = Job.objects.create(name="Job Two")
job2.skills.add(skill3)
job2.skills.add(skill4)
有表格展示
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = ["name", "skills"]
您可以在models.py中将表单或模板剪切到链接中。只需使用CharField创建字段
from django.db import models
class UserProfileInfo(models.Model):
Gender = models.CharField(max_length=10,default='')
在forms.py中,只需创建如下选择
class UserProfileInfoForm(forms.ModelForm):
YESNO_CHOICES = (('male', 'male'), ('female', 'female'))
Gender = forms.ChoiceField(choices=YESNO_CHOICES)
class Meta():
model = UserProfileInfo
fields = ('Gender',)
在views.py中导入此表单并显示它
或者你也可以去
您是如何在模型上定义它的?我没有模型,因为我不知道如何在那里保存multipleechoicefield@Clarity