无法将表单中的值添加到Django模型
我制作了一个表单,在那里我有一个名为“艺术家”的多选字段,这是我从数据库中获得的,在添加歌曲时,用户可以选择多个艺术家并保存歌曲。 艺术家们是Django模特中的许多人 型号.py无法将表单中的值添加到Django模型,django,database,forms,model,Django,Database,Forms,Model,我制作了一个表单,在那里我有一个名为“艺术家”的多选字段,这是我从数据库中获得的,在添加歌曲时,用户可以选择多个艺术家并保存歌曲。 艺术家们是Django模特中的许多人 型号.py class Artists(models.Model): """ Fields for storing Artists Data """ artist_name = models.CharField(max_length = 50, blank = False) dob = models.Da
class Artists(models.Model):
""" Fields for storing Artists Data """
artist_name = models.CharField(max_length = 50, blank = False)
dob = models.DateField()
bio = models.TextField(max_length = 150)
def __str__(self):
return self.artist_name
class Songs(models.Model):
""" Fields for storing song data """
song_name = models.CharField(max_length = 30, blank = False)
genre = models.CharField(max_length = 30, blank = False)
artist = models.ManyToManyField(Artists)
release_date = models.DateField()
class Song_input(forms.Form):
queryset = Artists.objects.only('artist_name')
OPTIONS = []
for i in queryset:
s = []
s = [i, i]
OPTIONS.append(s)
artist_name = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,choices=OPTIONS)
song_name = forms.CharField()
genre = forms.CharField()
release_date = forms.DateField(widget=DateInput)
forms.py
class Artists(models.Model):
""" Fields for storing Artists Data """
artist_name = models.CharField(max_length = 50, blank = False)
dob = models.DateField()
bio = models.TextField(max_length = 150)
def __str__(self):
return self.artist_name
class Songs(models.Model):
""" Fields for storing song data """
song_name = models.CharField(max_length = 30, blank = False)
genre = models.CharField(max_length = 30, blank = False)
artist = models.ManyToManyField(Artists)
release_date = models.DateField()
class Song_input(forms.Form):
queryset = Artists.objects.only('artist_name')
OPTIONS = []
for i in queryset:
s = []
s = [i, i]
OPTIONS.append(s)
artist_name = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,choices=OPTIONS)
song_name = forms.CharField()
genre = forms.CharField()
release_date = forms.DateField(widget=DateInput)
现在,我想获得从表单中选择的所有值并保存到我的数据库中。此处艺术家名称可能有多个值
我尝试过使用add()和create()方法,但不知道如何将一个字段(艺术家名称)包含多个数据的所有数据添加到我的数据库中。我强烈建议使用。特别是因为您使用了
ManyToManyField
s,这对于节省您自己来说更加麻烦
# app/forms.py
from django import forms
class SongForm(forms.ModelForm):
class Meta:
model = Songs
fields = '__all__'
widgets = {
'artist': forms.CheckboxSelectMultiple,
'release_date': forms.DateInput
}
form.save()
将对象保存在数据库中
在模板中,然后可以渲染模板:
<form method="post" action="{% url 'name-of-add_song-view' %}">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{%csrf_令牌%}
{{form}}
我强烈建议使用。特别是因为您使用了ManyToManyField
s,这对于节省您自己来说更加麻烦
# app/forms.py
from django import forms
class SongForm(forms.ModelForm):
class Meta:
model = Songs
fields = '__all__'
widgets = {
'artist': forms.CheckboxSelectMultiple,
'release_date': forms.DateInput
}
form.save()
将对象保存在数据库中
在模板中,然后可以渲染模板:
<form method="post" action="{% url 'name-of-add_song-view' %}">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
{%csrf_令牌%}
{{form}}
Pleae使用ModelForm
。谢谢,我现在使用了它,但我可以将自定义小部件与ModelForm一起使用吗?是的,如中所述,您可以在Meta
中指定小部件
。Pleae使用ModelForm
。谢谢,我现在使用了它,但我可以将自定义小部件与ModelForm一起使用吗?是的,如中所述,您可以在Meta
@SubhamBanerjee:ah中指定小部件
,但这是因为该字段名为artist
,而不是artist\u name
:input_type='date'@SubhamBanerjee:您是否将'release\u date':forms.DateInput
替换为'release\u date':DateInput
?@SubhamBanerjee:但您仍然引用旧的表单.DateInput
。如果您是子类,当然应该引用新类。@SubhamBanerjee:aarghh。。。我输入了一个打字错误(被复制了),它是release\u date
,而不是release\u data
@SubhamBanerjee:ah,但那是因为该字段名为artist
,而不是artist\u name
。是的,艺术家工作了,但我想要日期字段作为日历,我还尝试了类DateInput(forms.DateInput):input_type='date'@SubhamBanerjee:您是否将'release\u date':forms.DateInput
替换为'release\u date':DateInput
?@SubhamBanerjee:但您仍然引用旧的表单.DateInput
。如果您是子类,当然应该引用新类。@SubhamBanerjee:aarghh。。。我输入了一个打字错误(复制的),它是发布日期
,而不是发布数据
。