首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AJAX向django中的模型的ManyToMany列表添加条目

使用AJAX向django中的模型的ManyToMany列表添加条目
EN

Stack Overflow用户
提问于 2013-06-14 05:58:33
回答 1查看 295关注 0票数 0

我有一个模型,档案,还有一个ManyToManyField。它所链接的模型是事件。我正在尝试实现一个AJAX函数,该函数在执行时会将事件的详细信息添加到配置文件中。

我的模型:

代码语言:javascript
复制
class Event(models.Model):
    def __unicode__(self):
        return self.title
    event_id = models.BigIntegerField(blank = 'TRUE', primary_key='TRUE')
    title = models.CharField(max_length=200, blank = 'TRUE')

class Profile(models.Model):
    user = models.OneToOneField(User)
    name = models.CharField(max_length=50)
        eventList = models.ManyToManyField(Event, blank="TRUE", null="TRUE")

    def __unicode__(self):
        return self.name

在我的html中,我有一个调用函数的链接,如下所示:

代码语言:javascript
复制
<a href="#" onclick="addEvent({{ name.event_id }}, {{ user.get_profile.id }})">

addEvent函数的编写方式如下:

代码语言:javascript
复制
function addEvent(id, user){
    $.ajax({
        url: 'http://127.0.0.1:8000/addEvent/',
        type: "POST",
        data: {event_id: id, profile: user},
        success: function(data){
            $('hello').html("Yes");
        }
        error: function() {
            $('hello').html("No");
        }
    });
}

最后,我的实际视图如下所示:

代码语言:javascript
复制
@csrf_exempt
@login_required
def addEvent(request):
    event_id = request.POST['event_id']
    user = request.POST['profile']
    event = Event.objects.get(id = event_id)
    user = Profile.objects.get(id = user)
    user.eventList.add(event)

    return HttpResponse(status = 201)

单击function-call按钮,既不会触发成功也不会触发错误HTML,并且在检查管理站点后,我知道事件没有添加到eventList中。我认为我的问题在于我写我的视图和添加到eventList的方式。

EN

回答 1

Stack Overflow用户

发布于 2013-06-14 06:17:35

您必须在html中呈现一个表单,包括一个csrf_token。然后使用javascript onclick javascript触发表单的提交事件。如果不需要用户编辑任何内容,可以将表单隐藏。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17097866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档