mal*_*o95 16 python django django-forms
我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)
以下是该类别的模型,该表是包含我希望用户限制的关系的表:
class Category(models.Model):
name = models.CharField(max_length=50)
user = models.ForeignKey(User, unique=False)
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
最后,表单代码:
class ExcludedDateForm(ModelForm):
class Meta:
model = models.ExcludedDate
exclude = ('user', 'recurring',)
Run Code Online (Sandbox Code Playgroud)
如何让表单只显示category.user等于登录用户的类别子集?
Bot*_*res 21
您可以在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)
Run Code Online (Sandbox Code Playgroud)
在视图中,在构建表单时,除了标准形式参数之外,您还将指定当前用户:
form = ExcludedDateForm(user=request.user)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15931 次 |
最近记录: |