0

ManyToManyフィールドに自動追加を行う必要があります。私のクラス :

class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True)
status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='student')
courses_list = models.ManyToManyField(Course, blank=True)

新しいコースを保存した後、それをユーザーのcourse_listに追加したいと思います。

def newcourse(request):
if not request.user.is_authenticated():
    return render_to_response('login.html')
form = CourseForm()
if request.method == 'POST':
    form = CourseForm(request.POST)
    if form.is_valid():
        obj = form.save(commit=False)
        obj.owner = request.user
        obj = form.save()
        course_list = request.user.userprofile.courses_list.all()
        course_list += form
        course_list.save()
        return render(request, 'mycourses.html')
return render(request, 'newcourse.html', locals())

しかし、それは機能しません: `+ =のサポートされていないオペランドタイプ:'ManyRelatedManager'および'CourseForm' ``

たぶん私は新しいリクエストをする必要がありますか?

あなたがアイデアを持っているなら..:D

4

1 に答える 1

2

次のことを行う必要があります。

request.user.userprofile.courses_list.add(obj)

詳細については、ManyToMany関係に関するドキュメントを参照してください。

https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/

もちろん、プロファイルの取得も「適切な」方法で処理する必要があります。

try:
    profile = request.user.get_profile()
    profile.courses_list.add(obj)
except UserProfile.DoesNotExist:
    messages.error(request, "Couldn't find profile")
于 2012-07-13T10:04:41.883 に答える