【问题标题】:How to get latest id in many to many field django如何在多对多领域 django 中获取最新的 id
【发布时间】:2021-06-06 13:40:34
【问题描述】:
class Recept(models.Model):
    naslov = models.CharField(max_length=100)
    sestavine = models.CharField(max_length=100)
    priprava = models.TextField()
    datum = models.DateTimeField(default=timezone.now)
    avtor = models.ForeignKey(User, on_delete=models.CASCADE)
    likes = models.ManyToManyField(User, related_name="blog_recept")

    def last_like(self):

        return self.likes.latest('id')

所以我想返回字段喜欢的最新 id,但此代码返回用户的最新 id 我怎样才能获得最新的喜欢 id?

【问题讨论】:

  • 您可以使用through 定义一个中间Like 模型,该模型表示当用户喜欢Recept 时创建的每个喜欢。然后访问该中间模型以查找其中的最新对象,如this answer 中所述。
  • 很抱歉打扰了,但我查了答案,我不知道该怎么办。我试过了,但没用

标签: django


【解决方案1】:

正如@Mihai Chelaru 所说,您需要过滤直通模型。但是不需要自己制作直通模型,可以使用默认生成的:

through_instance = Recept.likes.through.objects.latest('id')
latest_like_user = through_instance.user
latest_like_recept = through_instance.recept

现在latest_like_user 包含最新的赞用户,latest_like_recept 包含最新的赞接收。

【讨论】:

  • 不知道您可以使用 ORM 访问直通模型,而无需像那样定义它。今天学到了新东西,谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-12-28
  • 2013-03-29
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 2014-08-25
  • 2014-05-30
  • 1970-01-01
相关资源
最近更新 更多