Поле Джанго появляется в одном виде, но не в другом - PullRequest
0 голосов
/ 28 июня 2019

Я только начинаю с Django, и у меня возникает проблема, когда , когда я добавил поле в свою модель (JobPost, которая наследуется от models.Model), и оно успешно перенесено, я могу видеть и взаимодействовать с новымполе при создании сообщения о работе, но не при просмотре JobPost (который отображается с использованием хрустящих форм с помощью тега {{form | crispy}}.

Я добавил имя поля в свойfields = [''] в моих views.py

models.py

class JobPost(models.Model):
#constants
CLEARANCE_LEVELS=[(...),]

author = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
content = models.TextField()
clearance_required = models.CharField(max_length=50, choices=CLEARANCE_LEVELS, default='None')
date_posted = models.DateTimeField(default=timezone.now)

views.py

class JobDetailView(DetailView):
    model = JobPost

class JobCreateView(LoginRequiredMixin, CreateView):
    model = JobPost
    fields = ['title', 'content', 'clearance_required']
    # form_valid checks if the user is logged in
    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

jobpost_form.html

{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
    <form method="POST">
        {% csrf_token %} <!--Used to prevent some XSS Attacks (Cross-site request forgery) -->
        <fieldset class="form-group">
            <legend class="border-bottom mb-4">Create Job Post</legend>
            {{ form|crispy }}
        </fieldset>
        <div class="form-group">
            <button class="btn btn-outline-info" type="submit">Submit</button>
        </div>
    </form>
</div>
{% endblock content %}

jobpost_detail.html

{% block content %}
<article class="media content-section">
    <img class="rounded-circle article-img" src="{{ object.author.profile.image.url }}">
    <div class="media-body">
        <div class="mb-2 article-metadata">
            <a class="mr-1" href="{% url 'profile' %}">{{ object.author }}</a> <!-- BROKEN LINK: SIMPLY TAKES TO CURRENTLY LOGGED IN USER-->
            <small class="text-muted">{{ object.date_posted|date:"F d, Y" }}</small>
            {% if object.author != user %}
                <a class="btn btn-secondary btn-sm float-right" href="{% url 'user-jobs' object.author.username %}">See all jobs the user applied to</a>
            {% endif %}
            <div>
                {% if object.author == user %}
                <a class="btn btn-secondary btn-sm mt-1 mb-1 float-right" href="{% url 'user-jobs' object.author.username %}">See all jobs the user applied to</a>
                <a class="btn btn-secondary btn-sm mt-1 mb-1" href="{% url 'job-update' object.id %}">Update Job Posting</a>
                <a class="btn btn-danger btn-sm mt-1 mb-1" href="{% url 'job-delete' object.id %}">Delete</a>
                {% endif %}
            </div>
        </div>
        <div class="mt-1">
            <h2 class="article-title">{{ object.title }}</h2>
            <p class="article-content">{{ object.content }}</p>
        </div>
    </div>
</article>
{% endblock content %}

Поэтому, когда я просматриваю его в своем браузере, я вижуполе «просвет_резервированного», когда я создаю сообщение о работе. Но когда я просто просматриваю сообщение о работе, оно отображает только заголовок и описание, а не новое поле «оформление_требуется». Я не знаю, как его отобразить.

Вот изображение проблемы: обратите внимание, что на втором рисунке отсутствует поле очистки The Create Job Page enter image description here

1 Ответ

1 голос
/ 29 июня 2019

Вы действительно выводите в object.clearance_required в jobpost_detail.html, потому что я его не вижу?

И, кстати, если вы выводите его, вы должны использовать object.get_clearance_required_display, , потому что это поле с вариантами выбора .

...