在 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>}
我有以下型号:
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>}