【问题标题】:showing which post a user liked/saved with python django.显示用户喜欢/使用 python django 保存的帖子。
【发布时间】:2017-03-26 17:28:17
【问题描述】:

我无法在 django/admin 中显示我的用户的“已保存”/“已点赞”帖子。我想在管理页面中有一个字段来显示哪个用户喜欢哪些帖子。我制作了一个 Userprofile 模型,其中存储了所有额外的信息(除了给定的 django 管理员用户配置文件中的信息)。所以这是我的模型视图:

class UserProfile(models.Model):
user = models.OneToOneField(User, null=True)
#likes = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True,default=1, related_name='likes')
likedPosts=models.ManyToManyField('self')
Field1 = models.CharField(max_length=50,default='Sunny')
Field2 = models.CharField(max_length=50,default='')

class Meta:
    ordering =['-user']

#def __unicode__(self):
 #   return self.user.username 


User.profile =property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

现在在喜欢的帖子字段中,我只有一些用户名或“用户对象” 我尝试了各种组合将信息输入管理页面,但正如您所见,我没有成功。 我尝试更改 unicode,当然还有喜欢的帖子行。如果您需要更多信息,请告诉我。我感谢各种帮助。

【问题讨论】:

    标签: python django admin


    【解决方案1】:

    django admin 并不是真的要在 django admin 中支持双向的多对多关系。但是,下面的链接包含一个解决方法,我认为应该可以更好地解释为什么默认情况下只从一侧显示多对多关系来解决您的问题。

    (many-to-many in list display django)。

    【讨论】:

      【解决方案2】:

      所以对于所有想做类似事情的人来说,这对我有用:

        class UserProfile(models.Model):
           likedPosts = models.ManyToManyField('self',default=None,blank=True)
      
      def __unicode__(self):
          return "{0}".format(self.user.likes.all())
      

      【讨论】:

        猜你喜欢
        • 2020-09-03
        • 2020-11-04
        • 1970-01-01
        • 2020-12-12
        • 2020-09-20
        • 2019-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多