【问题标题】:Return all of users posts and favourites? Django返回所有用户的帖子和收藏夹?姜戈
【发布时间】:2017-04-19 11:39:22
【问题描述】:

我正在创建用户喜欢的所有帖子以及用户创建的所有帖子的摘要页面。

我的数据库中有两个模型:AircraftAirline。用户可以将帖子上传到他们喜欢的任一模型。我只是对如何检索他们的帖子一无所知?

飞机模型

class Aircraft(AircraftModelBase):
    manufacturer = SortableForeignKey(Manufacturer)
    aircraft_type = SortableForeignKey(AircraftType)
    body = SortableForeignKey(Body)
    engines = models.PositiveSmallIntegerField(default=1)

航空公司模型

class Airline(AirlineModelBase):
    fleet_size = models.PositiveSmallIntegerField()
    alliance = models.CharField(max_length=100, null=True)
    average_fleet_age = models.PositiveSmallIntegerField()

在我的 Accounts 应用中,我制作了以下模型:

class FavoritedAircraft(models.Model):
  user = models.ForeignKey(User)
  aircraft = models.ForeignKey(Aircraft)

  def __str__(self):
    return self.aircraft.name


class FavoritedAirline(models.Model):
  user = models.ForeignKey(User)
  airline = models.ForeignKey(Aircraft)

  def __str__(self):
    return self.airline.name

我如何从根本上返回用户最喜欢的帖子,如果用户上传了任何内容,那么这些帖子也一样?

感谢您的帮助!

编辑

class UploadedAircraft(models.Model):
  user = models.ForeignKey(User)
  aircraft = models.ForeignKey(Aircraft)

  def __str__(self):
    return self.aircraft.name

【问题讨论】:

    标签: django


    【解决方案1】:

    您可以使用FavoritedAirline.objects.filter(user=<the_user_here>) 之类的内容查询您喜欢的类别,它将返回一个可迭代的查询集。

    但是,就您发布的AircraftAirline 模型的实现而言,您没有引用谁创建帖子的字段(除非它在您的基类中定义)。如果您将其作为外键添加,就像您在 FavoritedAirline 模型中所做的那样,您可以使用与上述相同类型的查询。

    【讨论】:

    • 我将如何实现?
    • 在两个模型中添加类似creator = models.ForeignKey(User) 的行。如果您的数据库已经创建,请记住还为此创建迁移。在此之后,您可以查询按用户过滤的模型。
    • 好的,我已经做到了。看看编辑。我不明白用户上传的内容将如何链接到 UploadedAircraft 类? django 是如何知道在那里分配上传的?
    • 好的,首先,您不必创建一个新类,您只需要将那一行包含到AirlineAircraft 模型中。其次,Django 不知道如何将数据放在那里,这是必须在您的视图中管理的东西。你有没有考虑过先做Django Tutorial
    猜你喜欢
    • 2013-07-08
    • 1970-01-01
    • 2020-09-11
    • 2020-08-05
    • 2017-04-03
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2020-05-23
    相关资源
    最近更新 更多