如何更正我的ORM语句以显示未与Django中的用户关联的所有朋友?

twknab

在我的Django应用程序中,我有两种模型,一种是“用户”,另一种是“友谊”。两者之间存在“多对多”关系,因为“用户”可以有许多“朋友”,而“朋友”可以有许多其他“用户”朋友。

如何返回所有与first_name ='Daniel'不是用户的朋友(名字和姓氏)?

Models.py:

class Friendships(models.Model):
    user = models.ForeignKey('Users', models.DO_NOTHING, related_name="usersfriend")
    friend = models.ForeignKey('Users', models.DO_NOTHING, related_name ="friendsfriend")
    created_at = models.DateTimeField(blank=True, null=True)
    updated_at = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'friendships'


class Users(models.Model):
    first_name = models.CharField(max_length=45, blank=True, null=True)
    last_name = models.CharField(max_length=45, blank=True, null=True)
    created_at = models.DateTimeField(blank=True, null=True)
    updated_at = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'users'

到目前为止,这是我在控制器中尝试过的方法(views.py)-请注意,我知道控制器应该很薄,但仍然要道歉。我在下面的代码段中尝试过(在多次尝试使用更清洁的方法失败之后)是尝试并首先抓住丹尼尔斯的朋友(将它们填充到列表中,然后删除所有重复的ID),然后按其ID过滤掉它们。

# show first and last name of all friends who daniel is not friends with:

def index(req):

    friends_of_daniel = Friendships.objects.filter(user__first_name='Daniel')
    daniels_friends = []
    for friend_of_daniel in friends_of_daniel:
        daniels_friends.append(friend_of_daniel.friend.id)

    daniels_friends = list(set(daniels_friends))

    not_daniels_friends = Friendships.objects.exclude(id__in=daniels_friends)

    context = {
        'not_daniels_friends':not_daniels_friends,
    }

return render(req, "friendapp/index.html",context)

但是,当我在视图(模板)文件中尝试以下操作时,仍然看到作为Daniels朋友的个人。知道我在做什么错吗?

<ul>
    {% for not_daniel_friend in not_daniels_friends %}
        <li>{{ not_daniel_friend.user.first_name }} {{ not_daniel_friend.user.last_name }}</li>
    {% endfor %}
</ul>
普拉卡·特里维迪(Prakhar Trivedi)

尝试此操作,在friend_of_daniel.friend.id的位置,您应该从用户模型中排除结果。

像这样的东西:

    def index(req):

        friends_of_daniel = Friendships.objects.filter(user__first_name='Daniel')
        daniels_friends = []
        for friend_of_daniel in friends_of_daniel:
            daniels_friends.append(friend_of_daniel.friend.id)

        daniels_friends = list(set(daniels_friends))

        not_daniels_friends = Users.objects.exclude(id__in=daniels_friends)

        context = {
            'not_daniels_friends':not_daniels_friends,
        }

    return render(req, "friendapp/index.html",context)

谢谢。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Django中获取组的所有用户?

如何在oracle中显示用户的所有特权?

Nmap扫描未显示我网络中的所有设备

如何在MySQL中让所有登录用户不是朋友的用户?

我如何显示公共路径中的所有图像

如何在Rails中显示json_response中的所有关联项目

我在页面上显示所有用户的图片和教育情况,如何将当前用户从列表中删除?

如何在graphene-django中仅向用户配置文件所有者显示特定字段?

如何在django admin中显示我所有模型的字段?

Django模板未显示我的所有参数

我如何与当前用户保存帖子而不在Django Rest Framework中查看端点中的所有用户列表

如何在模板(django)中显示在线朋友的总数?

初学者的问题。我如何显示产品中的所有图像?Django + Python

如何显示我关注的所有用户?

如何在列表视图中显示所有朋友的姓名

如何在Rails上的ruby中显示除当前用户和current_user的朋友以外的所有用户

谁能告诉我如何使用Selenium Webdiver在Facebook中打印所有朋友列表?

如何在Django中显示模板上的所有用户列表

如何显示所有喜欢我帖子的用户

Django分页未显示所有页面

如何在 Django 中显示所有用户的日程安排?

如何从我的验证器类中消除所有“if”语句

如何在 django 中显示特定用户创建的所有用户?

如何在与 Firebase 链接的 Android Studio 中显示我的应用程序的所有在线用户?

我如何允许所有用户在 Django 中处于非活动状态时都可以登录()

如何显示除当前使用 Django 登录的用户之外的所有用户

Django:我应该如何更正此表单以在下拉列表中显示模型的数据

MySQL如何获取不是我朋友的用户

如何获取所有 Django 组并可选择获取关联的用户记录?