我有两个模型:
class ArticleTemplate(models.Model):
title = models.CharField(max_length=250)
text = models.TexField()
[...]
owner = models.ForeignKey(user)
class Article(models.Model):
template = models.ForeignKey(ArticleTemplate)
title = models.CharField(max_length=250)
text = models.TexField()
[...]
owner = models.ForeignKey(user)以及文章的格式:
class ArticleForm(models.Model):
class Meta:
model = Article
fields = ('id', 'template', 'title', 'text')但是select会向我显示所有模板,以及那些不属于request.user的模板。
如何仅显示分配给已登录用户的数据?
发布于 2013-04-24 18:07:18
您可以在视图中通过调用queryset来过滤Django ModelForm中的外键选择:
form.template.queryset = ArticleTemplate.objects.filter(owner=request.user)发布于 2013-04-24 18:31:57
向ArticleForm添加一个__init__方法:
def __init__(self, *args, **kwargs):
logged_user = kwargs.pop("logged_user")
super(ArticleForm, self).__init__(*args, **kwargs)
templates = logged_user.article_template_set.all()
self.fields['template'].queryset = templates从视图:
form = ArticleForm(logged_user=request.user) #GET request
form = ArticleForm(request.POST, logged_user=request.user) #POSThttps://stackoverflow.com/questions/16188136
复制相似问题