gpt4 book ai didi

python - 如何使用 ModelForm 过滤 Django 表单中的值?

转载 作者:太空狗 更新时间:2023-10-29 16:54:55 26 4
gpt4 key购买 nike

我正在尝试使用 ModelForm 添加我的数据。它运行良好,除了 ForeignKey 下拉列表显示所有值,我只希望它显示与登录用户相关的值。

这是我的 ExcludedDate 模型,我要添加的记录:

class ExcludedDate(models.Model):
date = models.DateTimeField()
reason = models.CharField(max_length=50)
user = models.ForeignKey(User)
category = models.ForeignKey(Category)
recurring = models.ForeignKey(RecurringExclusion)

def __unicode__(self):
return self.reason

这是类别的模型,它是包含我想按用户限制的关系的表:

class Category(models.Model):
name = models.CharField(max_length=50)
user = models.ForeignKey(User, unique=False)

def __unicode__(self):
return self.name

最后是表单代码:

class ExcludedDateForm(ModelForm):

class Meta:
model = models.ExcludedDate
exclude = ('user', 'recurring',)

如何让表单仅显示 category.user 等于登录用户的类别子集?

最佳答案

您可以在 init 中自定义您的表单

class ExcludedDateForm(ModelForm):
class Meta:
model = models.ExcludedDate
exclude = ('user', 'recurring',)
def __init__(self, user=None, **kwargs):
super(ExcludedDateForm, self).__init__(**kwargs)
if user:
self.fields['category'].queryset = models.Category.objects.filter(user=user)

在 View 中,在构建表单时,除了标准表单参数外,您还需要指定当前用户:

form = ExcludedDateForm(user=request.user)

关于python - 如何使用 ModelForm 过滤 Django 表单中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3010489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com