簡體   English   中英

Django 包含在 ManyToMany 中的 ForeignKey 過濾器

[英]Django filter for ForeignKey included in ManyToMany

我不知道我是累了還是答案很簡單但我沒有看到

我有一個這樣的 model:


class Company(models.Model):
    name = models.CharField(max_length=32, unique=True)
    

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    company_admin = models.ManyToManyField(Company)
    # ...


class GroupData(models.Model):
    name = models.CharField(max_length=32)
    company = models.ForeignKey(
        Company, on_delete=models.CASCADE)

如果在視圖中我這樣做:

print(request.user.userprofile.company_admin.all())

...我得到了用戶所屬的所有公司的 QS,並且還可以。

我需要的是獲取 GroupData 的過濾器,其中公司“包含”到此 QS 中,以便僅獲取基於用戶“company_admin”權限的 GroupData 對象。

誰能幫助我了解如何獲得此過濾器?

太謝謝了

如果我理解要求:

user_company_pks = users_profile.company_admin.all().values_list( 'pk', flat=True)

filtered_groupdata = Groupdata.objects.filter( company__pk__in=user_company_pks )

第一個返回pk的列表。 第二個過濾器在該列表中具有 pk 公司的 groupdata 對象

可能值得調查是否

 filtered_groupdata = Groupdata.objects.filter( company_id__in=user_company_pks )

(a) 有效並且 (b) 明顯更有效。 外鍵 ( company_id ) 的值通常是相關 object 的 pk。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM