0

我有这样的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 }}模板时,它会显示所有用户创建的类别。但我想显示仅由登录用户创建的类别。怎么做?

4

1 回答 1

2

尝试以下操作:

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)
于 2013-10-02T12:23:52.073 回答