0

保存 m2m 字段时出现以下错误

Poll object needs to have a value for field "poll" before this many-to-many relationship can be used.

模型.py

class Poll(models.Model):
    title = models.CharField(max_length=200)
    created_on = models.DateField(auto_now=True)
    created_by = models.ManyToManyField(User)
    category = models.ManyToManyField("PollCategory")

表格.py

class PollForm(forms.ModelForm):
    class Meta:
        model = Poll
        exclude = ('created_by', 'created_on', 'category')

    def __init__(self, *args, **kwargs):
        super(PollForm, self).__init__(*args, **kwargs)
        self.fields['title'].error_messages = {'required': 'Please enter title'}

在views.py中

if request.method== "POST":
        form = PollForm(request.POST)
        if form.is_valid():
            #......code added
            poll=form.save(commit=False)
            poll.category = cat =request.POST['category']   #...manyTomany
            poll.created_by = request.user
            poll.save()
            form.save_m2m()

我在这里做错了什么?

4

1 回答 1

0

您不需要poll_form.category手动设置:这是由save_m2m.

(还要注意poll_form是一个误导性的名称:它不是一个表单,它是一个 Poll 实例。)

于 2013-10-07T16:27:15.660 回答