簡體   English   中英

Django CreateView-在Foreignkey字段中僅顯示特定對象

[英]Django CreateView - Display only particular objects in foreignkey field

我有一個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

這是視圖:

class ContactCreate(LoginRequiredMixin, generic.edit.CreateView):
    model = models.Contact
    success_url = reverse_lazy('site:contacts')
    fields = ['firstname', 'lastname', 'phone1', 'phone2', 'email', 'city', 'category']
    template_name = 'site/contacts.html'
    context_object_name = 'all_contacts'

我需要用戶看到的是一個僅具有類別的選擇,該類別包括與之關聯的適當的配置文件外鍵。

我很高興在此方面獲得一些幫助。 謝謝!

您可以覆蓋視圖的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模式有一個OneToOneFieldUserrelated_name 'profile' ,否則你不得不調整過濾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM