如何从InlineFormset中的图像字段获取图像URL?

时间:2016-02-03 14:48:40

标签: python django django-models django-templates inline-formset

我有以下型号:

class Event(models.Model):
    name = models.CharField(max_length=128, null=True, blank=True)

class Picture(models.Model):
    event = models.ForeignKey(Event)
    image = models.ImageField(upload_to='media')

Picture有一个FK到Event模型,所以当我想在表单中使用它们(创建一个事件并向其中添加图片)时,我使用内联formset。

# Event form not important here

PictureFormSet = inlineformset_factory(
    Event, 
    Picture, 
    min_num=1, 
    validate_min=True, 
    extra=1, 
    fields=(
        'image',
        ), 
    can_delete=True,
)

当我创建活动并上传文件时,它们可以正常工作。问题是我想编辑一个事件。我使用这个观点:

def event_summary(request, event_id):

    event = Event.objects.get(id=event_id)
    form = EventForm(instance=event)
    picture_formset = PictureFormSet(instance=event)

    if request.method == 'POST':
        form = EventForm(request.POST, instance=event)

        if form.is_valid():
            event_saved = form.save(commit=False)
            picture_formset = PictureFormSet(request.POST, request.FILES, instance=event_saved)

            if picture_formset.is_valid():
                event_saved.save()
                picture_formset.save()
                return redirect(active_events)

    return render(request, 'event_summary.html', {'form' : form, 'picture_formset' : picture_formset, 'event' : event})

我想在模板中只显示图片网址。如果我使用:

{% for picture_field in picture_formset %}
    {{ picture_field.image }}
{% endfor %}

它显示了url和select输入,但我需要URL在缩略图和输入中单独使用它。我已经读过{{ picture_field.image.url }}有效,但它没有。

任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:1)

您好像正在寻找import glob read_files = glob.glob("*.txt") with open("result.txt", "wb") as outfile: for f in read_files: with open(f, "rb") as infile: outfile.write(infile.read()) 属性,该属性附加到表单集中的每个表单:

instance

答案 1 :(得分:1)

使用Alex提供的代码和this StackOverflow问题,我解决了这个问题:

t2
相关问题