我是Django的總新手,所以這可能有一個明顯的答案,但迄今谷歌還沒有爲我工作。如何根據組顯示與登錄用戶相關的數據?
我有這個骨架應用程序使用Django 1.8。 我有一個簡單的模型,它擁有一個屬於ForeignKey的所有者字段。 當用戶登錄時,我只想顯示他/她有權訪問的項目。訪問由用戶屬於同一組的事實決定。
model.py
class Device(models.Model):
name = models.CharField(max_length=100,db_index=True)
owner = models.ForeignKey(Group)
def __str__(self):
return self.name
views.py
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.views import generic
from .models import Device
from django.contrib.auth.models import Group, User
class IndexView(generic.ListView):
"""
This renders the index page listing the devices a user can view
"""
template_name = 'devices/index.html'
context_object_name = 'devices_list'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(IndexView, self).dispatch(*args, **kwargs)
def get_queryset(self):
"""
Return the devices visible to the logged-in user
"""
return devices=Device.objects.all()
似乎我不能夠弄清楚是把在.filter什麼()來代替。所有()調用我的get_queryset方法。
感謝在正確的方向指針。我的理解中缺少的是field_in語法。現在我已經理解了這個概念,我可以進入下一個障礙(將會是什麼)。 最終的答案是: 'return Device.objects.filter(owner__in = self.request.user.groups.all())' –
@ Jean-MichelRubillon,很高興它讓你朝着正確的方向前進。我根據您的反饋更新了答案,並加入了其他參考資料。乾杯。 – James
感謝@TechMedicNYC提供全面的響應和微妙的方向。 –