第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Django中,我們?nèi)绾螐臄?shù)據(jù)庫中隨機獲取兩個以上的用戶?

在Django中,我們?nèi)绾螐臄?shù)據(jù)庫中隨機獲取兩個以上的用戶?

回首憶惘然 2023-10-26 14:28:48
好吧,我正在使用信號創(chuàng)建每個新用戶的個人資料,并且我嘗試在新用戶個人資料中添加一些默認關(guān)注者。我正在嘗試使用以下代碼,這實際上做得很好,但不完全是我希望做的事情。好用下面的代碼。pk=1,pk=2 的前 2 位用戶將成為每個新個人資料的默認關(guān)注者。我希望我可以給一些隨機用戶作為每個新用戶的關(guān)注者。例如:第一個用戶創(chuàng)建新帳戶并默認獲得兩個用戶關(guān)注 pk=1 , pk=2 第二個用戶創(chuàng)建新帳戶并默認獲得兩個用戶關(guān)注不同的主鍵,例如 pk=2 , pk = 4。代碼:使用以下代碼,每個新用戶都會獲得相同的兩個 2 個用戶,pk=1,pk=2,我不希望這樣。如何做我已經(jīng)用例子解釋過的事情。請幫助,因為我在這種情況下需要。我將非常感謝你。如果需要更多細節(jié)或代碼,請告訴我。我將與您分享。def create_profile(sender, created,instance,**kwargs):     if created:         userprofile = UserProfile.objects.create(user=instance)         default_user_profile = UserProfile.objects.get_or_create(user__pk=1)[0]         default_user_profile.follower.add(instance)         userprofile.follower.add(default_user_profile.user)         userprofile.follower.add(2)
查看完整描述

2 回答

?
元芳怎么了

TA貢獻1798條經(jīng)驗 獲得超7個贊

我們可以UserProfile通過以下方式獲得兩個隨機對象:


UserProfile.objects.order_by('?')[:2]

所以我們可以添加這些


def create_profile(sender, created,instance,**kwargs):

    if created:

        following = list(UserProfile.objects.order_by('?')[:2])

        userprofile = UserProfile.objects.create(user=instance)

        userprofile.follower.add(*following)

但如果s的數(shù)量UserProfile變大,這將需要相當(dāng)長的時間。它將為每個生成一個隨機數(shù)UserProfile,然后檢索數(shù)字最大的兩個,這可能并不理想。


我們可以使用一種更加偽隨機的方法,這種方法隨機性較低,但效率更高:


from random import sample


def create_profile(sender, created,instance,**kwargs):

    if created:

        pk_range = UserProfile.objects.count()

        k1, k2 = sample(range(pk_range), 2)

        f1 = UserProfile.objects.all()[k1]

        f2 = UserProfile.objects.all()[k2]

        userprofile = UserProfile.objects.create(user=instance)

        userprofile.follower.add(f1.user_id, f2.user_id)

這將起作用,因為當(dāng)然至少已經(jīng)有兩個UserProfiles。因此我們可以通過以下方式防范還沒有兩個UserProfiles 的情況:


from random import sample


def create_profile(sender, created,instance,**kwargs):

    if created:

        pk_range = UserProfile.objects.count()

        if pk_range > 1:

            k1, k2 = sample(range(pk_range), 2)

            f1 = UserProfile.objects.all()[k1]

            f2 = UserProfile.objects.all()[k2]

            userprofile = UserProfile.objects.create(user=instance)

            userprofile.follower.add(f1.user_id, f2.user_id)


查看完整回答
反對 回復(fù) 2023-10-26
?
繁星點點滴滴

TA貢獻1803條經(jīng)驗 獲得超3個贊

import random


users_scope = User.objects.all().exclude(pk=my_user_pk)


user_count = users_scope.count()

user_index_1, user_index_2 = random.sample(range(user_count - 1), 2)


follower1 = users_scope[user_index_1]

follower2 = users_scope[user_index_2]


查看完整回答
反對 回復(fù) 2023-10-26
  • 2 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號