我真的需要這方面的幫助:我有 3 個模型說 User、Item 和 Comment,其中 User 是 Item 中的外鍵,Item 是 Comment 中的外鍵。我想在我看來獲得屬于特定用戶的所有評論,我如何實作它。下面是我的模型
class User(models.Model):
name= models.CharField(max_length=200,null=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Item(models.Model):
user = models.ForeignKey(User, on_delete=CASCADE)
name= models.CharField(max_length=200,null=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Comment(models.Model):
user = models.ForeignKey(Item, on_delete=CASCADE)
name= models.CharField(max_length=200,null=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
uj5u.com熱心網友回復:
您的代碼中存在設計模型問題。
這是您如何做到的。
class Comment(models.Model):
item = models.ForeignKey(Item, on_delete=CASCADE) # the related item
author = models.ForeignKey(User,on_delete=CASCADE) #new ( the author of the comment)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
現在在你的 views.py 中你可以做這樣的事情。
Comment.objects.filter(author=request.user)
uj5u.com熱心網友回復:
更新 2
你應該考慮改變模型,就像amadou-sow說的那樣,這是做這些事情的正確方法
更新
def get_user_comments(request):
qs = Comment.objects.filter(user__user=request.user)
您可以使用“__”(雙 _)訪問您的相關物件,閱讀更多官方檔案
如果它是 Item 模型的外鍵,您真的應該將 Comment 模型中的“user”欄位重命名為“item”,如下所示:
class User(models.Model):
name= models.CharField(max_length=200,null=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Item(models.Model):
user = models.ForeignKey(User, on_delete=CASCADE)
name= models.CharField(max_length=200,null=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
class Comment(models.Model):
item = models.ForeignKey(Item, on_delete=CASCADE)
name = models.CharField(max_length=200,null=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
#view.py
def get_user_comments(request):
return Comment.objects.filter(item__user=request.user)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/370668.html
標籤:姜戈 django 模型 django-views django-queryset
下一篇:psycopg2列值上的未定義列
