我有以下模型:
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))
对于x in p]
最终在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,但是为什么呢?我究竟做错了什么?我看过的所有地方都应该像这样工作。
我还添加了request.FILES在PortfolioForm中,该实例没有被调用,我该如何解决?
答案 0 :(得分:0)
好吧,因为我用其他字眼来找到解决方案,所以我在Stackoverflow中找到了解决方案。
您需要在模板中执行的操作,而不是:
{<td><img src="{{field.image.url}}"></td>}
是这个:
{<td><img src="{{form.instance.image.url}}"></td>}