Как получить внешний ключ в представлениях из шаблона django? - PullRequest
0 голосов
/ 05 мая 2019

Я не могу получить имя поля в cleaned_data для формы, так как поле подходит под данные для запроса. POST

views.py

def newProjectView(request):
    if request.method == 'POST':
        projectForm = ProjectInsertionForm(request.POST)
        if projectForm.is_valid():
            jobDesc = projectForm.save(commit=False)
            jobDesc.save()
            messages.success(request, message="Succefully saved the Project.")
            return redirect('accounts:profile')
        else:
            messages.error(request, message='Unable to save the project, Please do check the details. \n%s \n%s' % (projectForm.cleaned_data, projectForm.data))
            return redirect('accounts:profile')

forms.py

class ProjectInsertionForm(forms.ModelForm):
    class Meta:
        model = CompanyDesc
        fields = ('companyDets', 'title', 'details')

models.py

class CompanyDesc(models.Model):
    companyDets = models.ForeignKey(CompanyList, on_delete=models.CASCADE)
    details = models.TextField()
    title = models.CharField(max_length=200)

    def __str__(self):
        return self.title

work.html

<p>
                                    <form action="{% url 'accounts:newProject' %}" method="POST">
                                        {% csrf_token %}
                                        <p><input type="text" name="companyDets" id="id_companyDets" value="{{ company.company }}" class="col-md-12" style="border-radius: 5px; border: 1px solid #d32878; padding: 5px;"></p>
                                        <p><input type="text" name="title" id="id_title" class="col-md-12" style="border-radius: 5px; border: 1px solid #d32878; padding: 5px;"></p>
                                        <p><input type="text" name="details" id="id_details" class="col-md-12" style="border-radius: 5px; border: 1px solid #d32878; padding: 5px;"></p>

                                        <p><input type="submit" class="razo-btn" value="Save Job"></p>
                                    </form>
</p>

В этом примере заголовок и подробности отображаются при очищенных данных, но атрибут companyDets не был вочищенные данные

Наконец в представлениях form.is_valid () возвращает False и переходит в блок else

Я что-то не так делаю ...?

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

Вы должны изменить форму, чем. формы

Class ProjectInsertionForm(forms.Form): 
companyDets = forms.CharField(max_length=202) 
title = forms.CharField(max_length=202) 
details = forms.CharField(max_length=202) 

вид

if form.is_valid():
    foo1 = form.cleaned_data.get("companyDets")
    foo2 = form.cleaned_data.get("title")
    foo3 = form.cleaned_data.get("details")
    obj = CompanyList.objects.get(***whatever field is in CompanyList Modal*** = foo1)
    obj2 = CompanyDesc(companyDets = obj, details = foo2, title=foo3)
    obj2.save()

    messages.success(request, message="Succefully saved the Project.")
    return redirect('accounts:profile')

HTML

<p>
                                    <form action="{% url 'accounts:newProject' %}" method="POST">
                                        {% csrf_token %}
                                        <p><input type="text" name="companyDets" id="id_companyDets" class="col-md-12" style="border-radius: 5px; border: 1px solid #d32878; padding: 5px;"></p>
                                        <p><input type="text" name="title" id="id_title" class="col-md-12" style="border-radius: 5px; border: 1px solid #d32878; padding: 5px;"></p>
                                        <p><input type="text" name="details" id="id_details" class="col-md-12" style="border-radius: 5px; border: 1px solid #d32878; padding: 5px;"></p>

                                        <p><input type="submit" class="razo-btn" value="Save Job"></p>
                                    </form>
</p>
0 голосов
/ 05 мая 2019

В моделях:

companyDets = models.ForeignKey(CompanyList, on_delete=models.CASCADE, related_name='foo')

В html:

<p><input type="text" name="foo" id="id_companyDets">

попробуйте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...