Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击收藏夹按钮将对象添加(并保存)到Django用户模型中的多对多字段中_Javascript_Python_Django_Many To Many - Fatal编程技术网

Javascript 单击收藏夹按钮将对象添加(并保存)到Django用户模型中的多对多字段中

Javascript 单击收藏夹按钮将对象添加(并保存)到Django用户模型中的多对多字段中,javascript,python,django,many-to-many,Javascript,Python,Django,Many To Many,当您单击google地图标记(在本例中是一个树对象)时,会弹出一个信息窗口,窗口上有一个心形按钮,让用户有机会心形(支持)这棵树。通过这样做,它将把树对象添加到userprofile的树字段(这是一个多对多字段)。但不幸的是,我在将树对象添加到userprofile的树字段时遇到了问题 下面是详细的代码: 心脏按钮(在index.html上) atree参数获取treeID,treeID是对象的主键-我知道这部分正在工作,因为我已经用警报对它进行了测试。接下来的几行代码没有运行,我认为这是我问题

当您单击google地图标记(在本例中是一个树对象)时,会弹出一个信息窗口,窗口上有一个心形按钮,让用户有机会心形(支持)这棵树。通过这样做,它将把树对象添加到userprofile的树字段(这是一个多对多字段)。但不幸的是,我在将树对象添加到userprofile的树字段时遇到了问题

下面是详细的代码:

心脏按钮(在index.html上)

atree参数获取treeID,treeID是对象的主键-我知道这部分正在工作,因为我已经用警报对它进行了测试。接下来的几行代码没有运行,我认为这是我问题的症结所在:

favTree = Tree.objects.get(pk=atree)
user.userprofile.tree.add(favTree)
我试图做的是获取tree对象并将其添加到userprofile的tree(多对多)字段中

任何关于我应该去哪里或我做错了什么的见解都将受到赞赏

谢谢


A

但是。。。这就是Python代码。你不能突然期望在一个JavaScript中间运行它。我能在Vist.Py中运行函数吗?是的。向执行此操作的视图发出Ajax请求。
  <script>
          function favButton(atree){
         {% if user.is_authenticated %}
          favTree = Tree.objects.get(pk=atree)
          user.userprofile.tree.add(favTree)
          alert("hearted tree is added to your favourites");
         {% else %}
          alert("please login to heart a tree");
          {% endif %}
          }
      </script>
class Tree(models.Model):

    treeId = models.IntegerField(primary_key=True)
    neighbourhood = models.CharField(max_length=128, blank=True)
    commonName = models.CharField(max_length=128, blank=True)
    diameter = models.FloatField(null=True, blank=True)
    streetNumber = models.PositiveSmallIntegerField(null=True, blank=True)
    street = models.CharField(max_length=128, blank=True)

    # Populated by sending street address to google and receiving lat lon output
    lat = models.FloatField(null=True, blank=True)
    lon = models.FloatField(null=True, blank=True)

    def save(self, *args, **kwargs):
                self.slug = slugify(self.treeId)
                super(Tree, self).save(*args, **kwargs)

    def __unicode__(self):
        return str(self.treeId)

class UserProfile(models.Model):
    # This line is required. Links UserProfile to a User model instance.
    user = models.OneToOneField(User)




    # The additional attributes we wish to include for a user.
    website = models.URLField(blank=True)
    picture = models.ImageField(upload_to='profile_images', blank=True)

    # Tree field is used to store user's favourite trees
    tree = models.ManyToManyField(Tree, blank=True)


    def __unicode__(self):
        return self.user.username
favTree = Tree.objects.get(pk=atree)
user.userprofile.tree.add(favTree)