向 manytomayfield 添加关系?

Adding a relationship to a manytomayfield?

views.py - 我正在尝试转发(添加多对多关系)我的用户推文,但我不断收到以下错误。当我在管理员中添加关系时它工作正常。它在我的模板上显示得很好但是当我尝试在我的视图中执行此操作时它似乎不起作用,我没有用 Django 做很多工作所以我需要一些认真的帮助我已经检查了文档和其他问题,但似乎找不到任何相关内容。

--> 'RelatedManager'对象没有属性'retweet'

  def retweet(request,user_id, tweet_id):
    logged_user = request.user.userprofile.tweet_set
    user_want_to_retweet = get_object_or_404(User, pk=user_id)
    user_profile_want_to_retweet = get_object_or_404(UserProfile, user=user_want_to_retweet)
    get_tweet = Tweet.objects.filter(userprofile=user_profile_want_to_retweet, id=tweet_id)
    add_retweet = logged_user.retweet.add(get_tweet)
    return HttpResponse('Retweeted')

models.py

 class Tweet(models.Model):
   userprofile = models.ForeignKey(UserProfile)
   tweets = models.TextField(max_length=120)
   retweet = models.ManyToManyField(UserProfile,   related_name='people_retweet', symmetrical=False, blank=True)
   date = models.DateTimeField()

urls.py

  url(r'^retweet/(?P<user_id>[\d]+)/(?P<tweet_id>[\d]+)/$', views.retweet, name='retweet')

我的模板 - combined_tweets 只是一个组合列表,我用它来从三个单独的查询中获取所有条目(推文)。我正在获取登录用户的推文、登录用户关注的人的推文以及登录用户转发的推文。但我不认为这是问题所在。

     {% for combined_tweeters in combined_tweets %}
             <ul><strong>{{ combined_tweeters.userprofile.user }} | {{ combined_tweeters }} | {{ combined_tweeters.date }} |
             {% if combined_tweeters.userprofile.user == request.user %} <a href="{% url 'delete_tweet' user_id=combined_tweeters.userprofile.user.id tweet_id=combined_tweeters.id %}">Delete </a>
             {%else%} <a href='{% url "retweet" user_id=combined_tweeters.userprofile.user.id tweet_id=combined_tweeters.id %}'>Retweet</a> {% endif %}</strong></ul>
     {% endfor %}

事实证明问题出在我的观点上,而我的处理方式是错误的,所以这里是为将来需要这方面帮助的任何人提供的答案,完全无视上述问题中的 user_id这是不需要的,没有 user_id URL 和模板,它们都很好,反过来也是正确的。

views.py

 def retweet(request, tweet_id):
   logged_user = request.user.userprofile
   get_tweet = get_object_or_404(Tweet, pk=tweet_id)
   add_retweet = get_tweet.retweet.add(logged_user)
   return HttpResponse('Retweeted')