我在python,django,ajax输入字段中有artist这些数据。我得到了Enter a list of values.错误。请你帮我保存这些数据好吗?谢谢
模型
artist = models.ManyToManyField(ApiArtist, blank=True)表格和验证
class ApiSongForm(ModelForm):
class Meta:
model = ApiSong
widgets = {
'artist': forms.TextInput(),
}
def clean_artist(self):
data = self.cleaned_data
artist_list = data.get('artist', None)
if artist_list is not None:
for artist_name in artist_list.split(','):
artist = ApiArtist(name=artist_name).save()
return artist_list编辑
现在,我已经从提供的链接中更改了代码复制/粘贴。但是我得到了Cannot resolve keyword 'artist' into field. Choices are: apisong, id, name。错误信息。这是我的ApiArtist和SongModel。谢谢
class ModelCommaSeparatedChoiceField(ModelMultipleChoiceField):
widget = forms.TextInput
def clean(self, value):
if value is not None:
print value
value = [item.strip() for item in value.split(",")] # remove padding
return super(ModelCommaSeparatedChoiceField, self).clean(value)
class ApiSongForm(ModelForm):
artist = ModelCommaSeparatedChoiceField(
required=False, queryset=ApiArtist.objects.filter(), to_field_name='artist')
class Meta:
model = ApiSong发布于 2012-10-14 08:18:52
现在,我的下面的代码正在工作。无论如何,谢谢
class ApiSongForm(ModelForm):
artist = forms.CharField()
def save(self, commit=True):
instance = super(ApiSongForm, self).save(commit=commit)
artists = self.cleaned_data.get('artist', None)
if artists is not None:
for artist_name in artists.split(","):
artist = ApiArtist.objects.create(name=artist_name)
instance.artist.add(artist)
instance.save()
return instance发布于 2012-10-13 19:00:47
首先,你不应该用干净的方法保存东西。
其次,代码不会将文本输入的值转换为列表。在if语句中有一个split,但是在返回结果之前,不要将结果设置为artist_list。
https://stackoverflow.com/questions/12875528
复制相似问题