社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

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

Ibo • 6 年前 • 772 次点击  

我有一个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
 
772 次点击  
文章 [ 1 ]  |  最新文章 6 年前