Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将表单中的值添加到Django模型_Django_Database_Forms_Model - Fatal编程技术网

无法将表单中的值添加到Django模型

无法将表单中的值添加到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

我制作了一个表单,在那里我有一个名为“艺术家”的多选字段,这是我从数据库中获得的,在添加歌曲时,用户可以选择多个艺术家并保存歌曲。

艺术家们是Django模特中的许多人

型号.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)
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。。。我输入了一个打字错误(复制的),它是
发布日期
,而不是
发布数据