根据请求筛选表单视图时出现“无属性”错误。用户Django 2.2

2024-10-05 14:25:11 发布

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

Django AttributeError在尝试使用queryset根据外键筛选ModelForm的结果时发生异常

Request Method:     GET
Request URL:    http://127.0.0.1:8000/pipelines/surveyview/
Django Version:     2.2.1
Exception Type:     AttributeError
Exception Value:    'SurveyDate' object has no attribute 'client_id' 

为什么它要寻找“客户id”而不是“客户id”呢

models.py

class Client(models.Model):
    client_id = models.AutoField(primary_key=True)

# add company ID field to the User model to pair with Client table.
class CustomUser(AbstractUser):
    client_id_fk = models.ForeignKey(Client, on_delete=models.CASCADE, blank=True, null=True)

class SurveyDate(models.Model):
    client_id_fk = models.ForeignKey(Client, on_delete=models.CASCADE)
    pipe_id_fk = models.ForeignKey(Pipeline, on_delete=models.CASCADE)
    survey_date = models.DateField()

    def __str__(self):
        return str(self.survey_date, self.pipe_id_fk)

forms.py

class SurveyDateForm(forms.ModelForm):
    class Meta:
        model = SurveyDate
        fields = ['client_id_fk', 'pipe_id_fk', 'survey_date']

    def __init__(self, request, *args, **kwargs):
        super(SurveyDateForm,self).__init__(*args, **kwargs)
        self.fields['client_id_fk'].queryset = SurveyDate.objects.filter(client_id_fk=request.user.client_id_fk)

views.py

form = SurveyDateForm(request)
return render(request, 'surveydate_list.html', {'form':form}

surveydate_list.html

<form method="get" novalidate>
    {% csrf_token %}
    <table>
    {{ form.as_table }}
    </table>
</form>

我希望表单只显示链接到当前登录用户的结果


Tags: pyselfformclientidtrueonmodels