簡體   English   中英

限制輸入內的選擇 django

[英]Limit choices inside an input django

我目前正在嘗試通過限制輸入內的選擇來改進我的表單(用戶只能選擇他們自己的標簽)。

在此處輸入圖像描述 標簽名/用戶名

我試圖在 get/post function 中這樣做:

    def post(self, request, *args, **kwargs):
        form = DateInputForm(request.POST, limit_choices_to={'tags__user': request.user})

    def get(self, request, *args, **kwargs):
        form = DateInputForm(limit_choices_to={'tags__user': request.user})

(1) 我得到一個錯誤。

基礎模型。 init () 得到了一個意外的關鍵字參數 'limit_choices_to'

我的表格:

class DateInputForm(ModelForm):

    class Meta:
        model = Task
        # exclude = ('user',)
        fields = ['user', 'title', 'description', 'date_to_do', 'complete', 'tags']
        widgets = {
            'date_to_do': forms.DateTimeInput(format='%Y-%m-%dT%H:%M',
                                              attrs={'type': 'datetime-local', 'class': 'timepicker'}),
        } 

我的看法:

class TaskUpdate(LoginRequiredMixin, UpdateView):
    model = Task
    template_name = "tasks/task_form.html"
    form_class = DateInputForm

標簽 model:

class Tag(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
    tag_name = models.CharField(max_length=200, null=True, blank=False, default='')

全局:目標是限制用戶在我的任務表單中可以選擇的標簽(帶有標簽輸入); 目前,一個用戶可以選擇另一個用戶的標簽,這不是我想要的。

我認為最簡單的方法是覆蓋表單的構造函數,如以下答案所示: https://stackoverflow.com/a/1969081/18728725

為了過濾輸入中的標簽,我返回並遵循 StefanoTrv 的連接方法。 這是我的解決方案:

    def __init__(self, *args, **kwargs):
        super(DateInputForm, self).__init__(*args, **kwargs)
        if 'instance' in kwargs:
            new_kwargs = kwargs.get('instance')
            self.fields['tags'].queryset = Tag.objects.filter(user=new_kwargs.user.id)

警告,這在 createView 中不起作用

暫無
暫無

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

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