Django表单图像选择 - 窗口小部件类型

时间:2018-05-08 20:34:24

标签: python django django-models django-forms

确定。我想创建一个从模型A更改图像的应用程序,并将其保存为模型B中的新图像。在模板中的表单上,我希望选择可见图像。我该怎么办?

模型和表格A

模型

from django.db import models


class Photo(models.Model):
    photo = models.ImageField(blank=True, null=True)

形式

from django import forms
from .models import Photo


class Photoform(forms.ModelForm):
    photo = forms.ImageField(required=True)

    class Meta:
        model = Photo
        fields = ('photo',)

模型和表格B

模型

from django.db import models


class Meme(models.Model):
    meme = models.ImageField(blank=True, null=True)

形式

from django import forms
from Uploader.models import Photo


class Memeform(forms.Form):
    meme = forms.ModelChoiceField(Photo.objects.all(), widget=forms.RadioSelect)

    class Meta:
        model = Photo
        fields = ('meme',)

模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method= "post" enctype="multipart/form-data">
        <p>
            <h2>Your image here</h2>
            {% csrf_token %}
            {{ form.as_p }}
            <button type="submit">Create</button>
        </p>
    </form>
</body>
</html>

现在我有小部件RadioSelect,但我需要看到可供选择的图像。

2 个答案:

答案 0 :(得分:0)

您的观点中有

form.fields["photo"].queryset = Photo.objects.all()。您可以在此处提及更多内容.. http://www.wkoorts.com/wkblog/2009/08/10/pre-populate-django-modelform-with-specific-queryset/

答案 1 :(得分:0)

您认为

form.fields["photo"].queryset = Photo.objects.all()

您可以参考更多。 在HTML中,您应该写下:

{% csrf_token %}
{{ form.media }}