首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在select中只显示一些数据?

如何在select中只显示一些数据?
EN

Stack Overflow用户
提问于 2013-04-24 17:18:07
回答 2查看 38关注 0票数 1

我有两个模型:

代码语言:javascript
运行
复制
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)

以及文章的格式:

代码语言:javascript
运行
复制
class ArticleForm(models.Model):
    class Meta:
        model = Article
        fields = ('id', 'template', 'title', 'text')

但是select会向我显示所有模板,以及那些不属于request.user的模板。

如何仅显示分配给已登录用户的数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-24 18:07:18

您可以在视图中通过调用queryset来过滤Django ModelForm中的外键选择:

代码语言:javascript
运行
复制
form.template.queryset = ArticleTemplate.objects.filter(owner=request.user)
票数 1
EN

Stack Overflow用户

发布于 2013-04-24 18:31:57

向ArticleForm添加一个__init__方法:

代码语言:javascript
运行
复制
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

从视图:

代码语言:javascript
运行
复制
form = ArticleForm(logged_user=request.user) #GET request

form = ArticleForm(request.POST, logged_user=request.user) #POST
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16188136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档