Django -Modelform-用户过滤

发布于 2025-02-11 14:00:42 字数 765 浏览 2 评论 0原文

我需要过滤雇员只是向我展示与用户相关的公司的

选项

class Company(models.Model):
    reg_user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    cuit = models.CharField(max_length=20)

class Employee(models.Model):
    company = models.ForeignKey(Empresa, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    cuil = models.CharField(max_length=20)

forms.py:

class EmployeeForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        ...
        self.fields['name'].widget.attrs['autofocus'] = True

我需要在椭圆机中编写什么代码?目前,它向我展示了所有公司甚至没有用户拥有的公司。

I need to filter in EmployeeForm just to show me options of Companies related to user is logged in. I'm using ModelForm and CreateViews

This is my code:

models.py:

class Company(models.Model):
    reg_user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    cuit = models.CharField(max_length=20)

class Employee(models.Model):
    company = models.ForeignKey(Empresa, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    cuil = models.CharField(max_length=20)

forms.py:

class EmployeeForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        ...
        self.fields['name'].widget.attrs['autofocus'] = True

What is the code I need to write in the ellipses? It's currently showing me all companies even ones not owned by the user.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黑寡妇 2025-02-18 14:00:42

我使用forms.form而不是modelform,但是我要做的是:

class EmployeeForm(forms.Form):
    companies = forms.ModelChoiceField(queryset=None)

    def __init__(self, user, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['companies'].queryset = Company.objects.filter(reg_user=user)

I use forms.Form for this instead of ModelForm, but what i do is:

class EmployeeForm(forms.Form):
    companies = forms.ModelChoiceField(queryset=None)

    def __init__(self, user, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['companies'].queryset = Company.objects.filter(reg_user=user)
执笏见 2025-02-18 14:00:42

我终于可以通过在Views.py中使用此解决此问题来解决这个问题

def get_form(self):
        form = super(EmployeeCreateView, self).get_form()
        form.fields['company'].queryset = Company.objects.filter(reg_user=self.request.user)
        return form

I finally could solve this by using this in views.py

def get_form(self):
        form = super(EmployeeCreateView, self).get_form()
        form.fields['company'].queryset = Company.objects.filter(reg_user=self.request.user)
        return form

Thanks for everyone!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文