在 ModelForm 中显示图像

Displaying an Image in ModelForm

我有以下型号:

class Portfolio(models.Model):
    id = models.AutoField(primary_key=True)
    member = models.ForeignKey(Member, on_delete=models.CASCADE)
    image = models.ImageField(upload_to='portraits/', default='/images/some_image.png')

为此,我制作了 ModelForm:

 class PortfolioForm(forms.ModelForm):

    class Meta:
        model = Portfolio
        exclude = ['id']

我在一个模板中需要很多这样的模板,所以我按照以下方式创建它们

  def portfolio_form(request, pk):
       ...
       formset =  PortfolioFormSet(queryset=Portfolio.objects.filter(pk__in=list_of_ids))

对于 p 中的 x]

终于在 html 我有了这个:

<form enctype="multipart/form-data" action="{% url 'elec:portfolio_form' pk=id %}" method="POST">{% csrf_token %}
  ...
  {{ formset.management_form }}
  {% for form in formset.forms %}
       <tr>{% for field in form %}
            {% if field.name == 'image' %}
                 <td><img src="{{field.image.url}}"></td>
            {% else %}
                 <td align="center" valign="middle">{{field}}</td>
            {% endif %}
      {% endfor %}</tr>
  {% endfor %}
  <input type="submit" class="btn btn-default" value="Save and Refresh" />
</form>

现在我希望看到的是我保存到该模型中的图像。 if 语句返回为 false 但为什么呢?我究竟做错了什么?我看到的每个地方都应该像这样工作。

此外,我在 PortfolioForm 中添加了 request.FILES,但该实例未被调用,我该如何解决?

好的,我在 Whosebug 中找到了解决方案,因为我使用了一些其他词来找到解决方案。

您需要在模板中做什么而不是:

{<td><img src="{{field.image.url}}"></td>}

是这个吗:

{<td><img src="{{form.instance.image.url}}"></td>}