[英]Filtering Foreign Keys in Django 2.0
因此,我需要過濾用戶當前正在登錄的用戶發布的帖子。
這是我的模型:
class ProfileDetails(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
provider = models.CharField(max_length=20, null=True, blank=True)
firstname = models.CharField(max_length=25, null=True, blank=True)
lastname = models.CharField(max_length=25, null=True, blank=True)
username = models.CharField(max_length=24, null=True, blank=True, unique=True)
def __str__(self):
return str(self.user)
class Posts(models.Model):
post_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.ForeignKey(ProfileDetails, on_delete=models.CASCADE, null=True)
text = models.TextField(max_length=280, null=True, blank=True)
video = models.CharField(max_length=24, null=True, blank=True)
timestamp = models.DateTimeField(default=datetime.datetime.now, blank=True)
def __str__(self):
return str(self.user)
class Connection(models.Model):
follower = models.ForeignKey(ProfileDetails, related_name='follower', on_delete=models.SET_NULL, null=True)
following = models.ForeignKey(ProfileDetails, related_name='following', on_delete=models.SET_NULL, null=True)
# follower = models.ManyToManyField(ProfileDetails, related_name='follower')
# following = models.ManyToManyField(ProfileDetails, related_name='following')
date_created = models.DateTimeField(auto_now_add=True, null=True)
def __str__(self):
return str(self.follower)
然后,根據我的觀點,我對Python / Django的了解程度指導我編寫類似的內容(特別是在最后一點,我嘗試對其進行過濾,以便僅從關注的用戶那里獲取詳細信息。
def index(request):
checkuser = request.user
print(checkuser)
if ProfileDetails.objects.filter(user=checkuser):
print("user previously logged in")
sns = get_object_or_404(SocialAccount, user=checkuser)
autoupdateprofile = get_object_or_404(ProfileDetails, user=checkuser)
autoupdateprofile.lastlogin = datetime.datetime.now()
autoupdateprofile.save(update_fields=["lastlogin"])
# print(sns.provider)
details = get_object_or_404(ProfileDetails, user=checkuser)
videos = Posts.objects.filter(media=True, imade=True).order_by("-timestamp")[0:6]
followercount = Connection.objects.filter(follower=details).count()
follows = Connection.objects.filter(follower=details)
followerposts = Posts.objects.filter(user=follows)
for a in followerposts:
print(a)
return render (request, 'index.html', context)
但是,這似乎不起作用。 我遇到了這個可愛的錯誤,試圖讓我使用ProfileProfiles模型中的數據-這顯然毫無意義,原因是我還能如何指示我在Connections中關注的用戶。
Exception Value:
Cannot use QuerySet for "Connection": Use a QuerySet for "ProfileDetails".
經過幾天的努力,不再確定要搜索的內容。
如果有什么不同,我在Postgresql上使用Python 3.6和Django 2.0.4。
建議將不勝感激。 :)
提前致謝。 羅納德
該代碼進入並從當前用戶關注的用戶(即當前用戶為其follower
)獲取所有帖子:
Posts.objects.filter(user__following__follower=ProfileDetails.objects.get(user=self.request.user))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.