Py学习  »  Django

基于登录用户的Django表单中的筛选器下拉选项

Ibo • 6 年前 • 776 次点击  

我有一个django表单来创建一个名为 Ticket . 用户可以来自不同的 clients 所以我需要将下拉列表中显示的选项基本上限制到登录用户的客户端。 client 是我在中定义的类的属性 admin.py ,它定义了 客户机 名称 user . 我知道我走的是正确的道路,但我很难做到这一点,因为我需要提取 客户机 已登录的 User 然后使用它过滤字段(例如 business )初始化表格时,有什么帮助吗?请考虑我有多个字段需要筛选,因此如果有一种方法可以对所有字段进行一次筛选,那将是非常好的:

模特儿

class Business(models.Model):
    client=models.ForeignKey('Client',on_delete=models.CASCADE, limit_choices_to={'is_active':True},)
    name=models.CharField(max_length=30,blank=False, unique=True,)
    description = models.CharField(max_length=50, blank=True, )
    is_active=models.BooleanField(default=True,)



class Ticket(MMRequestAttributes):    
    no=models.CharField('Ticket Number',max_length=50,default=uuid.uuid4,null=False, blank=False, editable=False, unique=True)
    subject=models.CharField('Subject',max_length=100,null=False, blank=False)
    business=models.ForeignKey('Business', on_delete=models.CASCADE,limit_choices_to={'is_active':True},)

    class Meta:
        permissions=(('view_ticket','Can see tickets'),)

VIEW

def new_ticket(request):
    form=NewTicket(request.user)
    return render(request,'mmrapp/new_ticket.html',{'form':form})

行政管理部门

class UserExtend(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, blank=False,null=False,)
    client=models.ForeignKey('Client', on_delete=models.CASCADE,limit_choices_to={'is_active': True},)

    class Meta:
        verbose_name_plural='User Extends'

表单

from django import forms
from .models import Ticket 
from .admin import UserExtend

class NewTicket(forms.ModelForm):

    def __init__(self,user):
        self.business.queryset=business.objects.filter(client.id=userextend.client_id)

    class Meta:
        model=Ticket
        fields = ('subject','business')

NeX-TICKET.HTML

{% extends 'mmrapp/__l_single_column.html' %}
{% load static %}

{% block main_col %}
    <h1>New Ticket</h1>
    <form method="POST" class="new-ticket">{% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="save btn btn-default">Submit</button>
    </form>
{% endblock main_col %}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37937
 
776 次点击  
文章 [ 1 ]  |  最新文章 6 年前