Django CreateView只显示foreignkey字段中的特定对象

2024-05-29 02:48:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CreateView视图,其中包含了用户在创建新联系人时需要填写的一系列字段。现在,我希望用户能够看到并仅从他们创建的类别中进行选择。 这是类别的模型:

class Category(models.Model):
    class Meta:
        verbose_name = _('category')
        verbose_name_plural = _('categories')

    name = models.CharField(max_length=100, unique=True)
    profile = models.ForeignKey(Profile, on_delete=models.CASCADE)

    def __unicode__(self):
        return self.name

以下是视图:

^{pr2}$

我需要用户看到的是一个select,它只包含与它们相关联的适当的profile外键的类别。在

我很乐意得到一些帮助。谢谢您!在


Tags: 用户name模型self视图verbosemodelmodels
1条回答
网友
1楼 · 发布于 2024-05-29 02:48:02

您可以重写视图的get_form方法,并设置相应字段的queryset:

class ContactCreate(LoginRequiredMixin, generic.edit.CreateView):
    # ...
    def get_form(self, *args, **kwargs):
        form = super(ContactCreate, self).get_form(*args, **kwargs)
        form.fields['categories'].queryset = Category.objects.filter(profile=self.request.user.profile)
        return form

当然,这是假设您的Profile模型有一个OneToOneField到{}和{}'profile',否则您必须调整过滤。在

相关问题 更多 >

    热门问题