簡體   English   中英

如何在Django ModelForm中獲取僅與該用戶的下拉列表相關的外鍵

[英]How to get the foreign keys related to drop down only of that user in Django ModelForm

我有這樣的Category模型:

class Task(models.Model):
    '''
        Task for the wedding plans
    '''
    description = models.CharField(max_length=128)
    owner = models.ForeignKey(User, default="bride")
    category = models.ForeignKey(Category)

class Category(models.Model):

    user = models.ForeignKey(User)
    name = models.CharField(max_length=128)
    budget = models.DecimalField(default=0.0, decimal_places=2, max_digits=8, help_text="Amount in dollars ($)")

    class Meta:
        verbose_name_plural = "Categories"

在我的forms.py

class CategoryForm(ModelForm):
    class Meta:
        model = Category
        exclude = ['user']

class TaskForm(ModelForm):
    class Meta:
       model = Task
       exclude = ['owner']


# views
form = TaskForm()

當我在模板中調用{{ form }}時,它顯示了所有用戶創建的類別。 但我想顯示僅由登錄用戶創建的類別。 怎么做?

請嘗試以下操作:

form = TaskForm()
form.fields['owner'].queryset = Task.objects.filter(owner=request.user)

如果多次使用TaskForm ,請按照以下說明進行修改:

class TaskForm(ModelForm):
    class Meta:
       model = Task
       exclude = ['owner']
    def __init__(self, user, *args, **kwargs):
        super(TaskForm, self).__init__(*args, **kwargs)
        self.fields['owner'].queryset = Task.objects.filter(owner=user)

然后,傳遞request.user

form = TaskForm(request.user)

暫無
暫無

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

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