0

重複の可能性:
ManyToManyField を Textarea としてレンダリングするときの Django の「値のリストを入力してください」フォーム エラー

入力フィールドに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
4

2 に答える 2

1

今、私の次のコードが機能しています。とにかく、ありがとう

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-14T08:18:52.763 に答える
1

まず、クリーンな方法で保存するべきではありません。

第二に、あなたのコードは値を textinput からリストに変換しません。if ステートメントにasplitがありますが、返す前に結果を元に戻していませんartist_list

于 2012-10-13T19:00:47.687 に答える