我可以删除用户的帖子(推文),但当我这样做时,最终会删除所有该用户的推文,而我只想一次删除一个,我认为这与该方式有关我正在查询用户的推文,但我不确定。我正在使用Django 1.8。
models.py
from django.db import models
from django.contrib.auth.models import User
import tagging
from tagging.registry import register as tagging_
import os
def get_image_path(instance, filename):
return os.path.join('photos', str(instance.user.id), filename)
class UserProfile(models.Model):
user = models.OneToOneField(User)
bio = models.CharField(max_length=120, blank=True, verbose_name='Biography')
follows = models.ManyToManyField('self', related_name='followers', symmetrical=False, blank=True) #reverse related relations, or through
theme = models.ImageField(upload_to=get_image_path, blank=True)
profile_picture = models.ImageField(upload_to=get_image_path, blank=True)
def __str__(self):
return self.bio
class Tweet(models.Model):
userprofile = models.ForeignKey(UserProfile)
tweets = models.TextField(max_length=120)
date = models.DateTimeField()
def json_feat(self):
return{
'title': self.tweets,
}
def __str__(self):
return self.tweets
tagging_(Tweet)
views.py
def delete_tweet(request, user_id):
data = {'You deleted your tweet'}
user = get_object_or_404(User, pk=user_id)
user_profile = get_object_or_404(UserProfile, user=user)
get_users_tweets = Tweet.objects.filter(userprofile=user_profile)
remove_tweet = get_users_tweets.delete()
return JsonResponse(data, safe=False)
模板
{% for tweets in tweet %}
{{ tweets.userprofile.user }} | {{ tweets }} | {{ tweets.date }} | <a href='{% url 'delete_tweet' user_id=user.id %}'>Delete </a> <br />
{% endfor %}
网址
url(r'^delete/(?P<user_id>[\d]+)/$', views.delete_tweet, name='delete_tweet'),
答案 0 :(得分:2)
get_users_tweets = Tweet.objects.filter(userprofile=user_profile)
将为您提供指定用户编写的所有推文 - &gt;所有这些都被删除了。你想删除哪一个?你需要指定。
修改强>
(在指定OP想要在评论中做什么之后)
将网址更新为:
url(r'^delete/(?P<tweet_id>[\d]+)/$', views.delete_tweet, name='delete_tweet'),
...以及您的 views.py :
def delete_tweet(request, tweet_id):
data = {'You deleted your tweet.'}
tweet = Tweet.objects.filter(pk=tweet_id)
tweet.delete()
return JsonResponse(data, safe=False)
答案 1 :(得分:1)
您需要在网址中添加推文ID
def delete_tweet(request, user_id,tweet_id):
data = {'You deleted your tweet'}
user = get_object_or_404(User, pk=user_id)
user_profile = get_object_or_404(UserProfile, user=user)
get_users_tweets = Tweet.objects.filter(userprofile_id=user_id,id=tweet_id)
remove_tweet = get_users_tweets.delete()
return JsonResponse(data, safe=False)
然后您的视图将如下所示
cabal repl
这将删除有关该用户的特定推文。