Получение ошибки «без атрибута» при фильтрации представления формы на основе request.user Django 2.2 - PullRequest
0 голосов
/ 05 июня 2019

Исключение Django AttributeError при попытке использовать набор запросов для фильтрации результатов 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' 

Почему он ищет 'client_id' вместо 'client_id_fk'?

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>

Я хочу, чтобы в форме отображались только результаты, связанные с вошедшим в данный момент пользователем.

...