【问题标题】:Django - order many to many relation on id of intermediary model without using throughDjango - 在中间模型的 id 上订购多对多关系而不使用 through
【发布时间】:2016-11-16 07:34:12
【问题描述】:

我在对多对多字段进行排序时遇到问题。

我在爱好领域有很多关系。 我想保持用户添加爱好的顺序。这可以通过对中间模型 id 上的记录进行排序来完成。

许多人建议使用 through 并添加一些字段进行排序。 但这会在我使用相关模型的添加功能创建记录时产生问题。

有没有办法为中间模型提供元排序,以便在我访问数据时按 id 排序。

我的模型是 -

class User(AbstractBaseUser, PermissionsMixin):   
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    hobbies = models.ManyToManyField('UserHobby')

class UserHobby(models.Model):
    hobby = models.CharField(max_length=100)

【问题讨论】:

    标签: python django


    【解决方案1】:

    如果您明确定义直通模型,则可以提供元排序。如果没有,您仍然可以使用 QuerySet 对象的order_by() 方法来提供您想要的排序,如下所示

    user = Users.objects.get(id=1)
    
    user.hobbies.all().order_by('id')
    

    【讨论】:

      猜你喜欢
      • 2015-11-05
      • 2013-07-15
      • 1970-01-01
      • 2012-04-24
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      相关资源
      最近更新 更多