Django 将具有特定属性的自定义用户添加到';朋友';列表
我已经实现了从整个用户列表中将用户添加到“朋友列表”的逻辑 型号.pyDjango 将具有特定属性的自定义用户添加到';朋友';列表,django,django-queryset,django-filter,django-custom-user,Django,Django Queryset,Django Filter,Django Custom User,我已经实现了从整个用户列表中将用户添加到“朋友列表”的逻辑 型号.py class VendorList(models.Model): users = models.ManyToManyField(User) current_user = models.ForeignKey(User, related_name='owner', on_delete=models.SET_NULL, null=True) @classmethod def add_vendor(c
class VendorList(models.Model):
users = models.ManyToManyField(User)
current_user = models.ForeignKey(User, related_name='owner', on_delete=models.SET_NULL, null=True)
@classmethod
def add_vendor(cls, current_user, new_vendor):
vendor, created = cls.objects.get_or_create(
current_user=current_user
)
vendor.users.add(new_vendor)
@classmethod
def remove_vendor(cls, current_user, new_vendor):
vendor, created = cls.objects.get_or_create(
current_user=current_user
)
vendor.users.remove(new_vendor)
class VendorListView(TemplateView):
template_name = 'event/vendor_list.html'
def get(self, request):
#form = EventItemModelForm()
users = User.objects.exclude(id=request.user.id)
vendor = VendorList.objects.get(current_user=request.user)
vendors = vendor.users.all()
args = {
#'form': form,
'users': users, 'vendors': vendors
}
return render(request, self.template_name, args)
def change_vendor_list(request, operation, pk):
vendor = User.objects.get(pk=pk)
if operation == 'add':
VendorList.add_vendor(request.user, vendor)
elif operation == 'remove':
VendorList.remove_vendor(request.user, vendor)
return redirect('/vendors/')
视图.py
class VendorList(models.Model):
users = models.ManyToManyField(User)
current_user = models.ForeignKey(User, related_name='owner', on_delete=models.SET_NULL, null=True)
@classmethod
def add_vendor(cls, current_user, new_vendor):
vendor, created = cls.objects.get_or_create(
current_user=current_user
)
vendor.users.add(new_vendor)
@classmethod
def remove_vendor(cls, current_user, new_vendor):
vendor, created = cls.objects.get_or_create(
current_user=current_user
)
vendor.users.remove(new_vendor)
class VendorListView(TemplateView):
template_name = 'event/vendor_list.html'
def get(self, request):
#form = EventItemModelForm()
users = User.objects.exclude(id=request.user.id)
vendor = VendorList.objects.get(current_user=request.user)
vendors = vendor.users.all()
args = {
#'form': form,
'users': users, 'vendors': vendors
}
return render(request, self.template_name, args)
def change_vendor_list(request, operation, pk):
vendor = User.objects.get(pk=pk)
if operation == 'add':
VendorList.add_vendor(request.user, vendor)
elif operation == 'remove':
VendorList.remove_vendor(request.user, vendor)
return redirect('/vendors/')
它工作并提供我可以添加到列表中的所有用户的列表。但是,我需要过滤这个“整个”列表,并只显示具有“is\U供应商”属性的用户(类似于is\U员工)。
我应该在哪里筛选模型或视图中的用户?我试过了
vendors = vendor.users.filter(is_vendor=True)
这不起作用。我发现有一个可用的筛选选项列表。我需要像这样使用供应商,而不是筛选供应商:
vendors = vendor.users.filter(vendor=True)