微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Django 中使用图像填充表单中的字段

如何解决在 Django 中使用图像填充表单中的字段

我正在尝试使用来自 Django 模型的图像填充字段。这个想法是,用户将输入他们的产品名称,然后最终一个带有谷歌图片的 API 会查找并填充下一页上的一个字段,其中包含几个可供选择的图片

在这个阶段,我只是想在表单上设置一个字段来显示多张图片用户选择,但我遇到了困难。这是我的一些代码,任何输入都有帮助。我知道围绕这个主题有很多东西,我已经浏览了很多,但我仍然被困住了。我最近的尝试是创建一个自定义 Widget,我非常愿意接受任何可行的解决方案。

我真的不是 Django/Python 向导,所以请耐心等待 :) 谢谢!

模型.py

frame size: 1013760
buffer can read: 0

forms.py

class Productimage(models.Model):
imageId = models.AutoField(auto_created=True,primary_key=True)
image = models.ImageField(upload_to='images',null=True,blank=True)

def __str__(self):
    return str(self.image)


class Item(models.Model):
itemId = models.AutoField(auto_created=True,primary_key=True)
itemName = models.CharField(
    "Name",max_length=1024,)
category = models.ForeignKey(Category,on_delete=models.CASCADE,related_name='category'
                             )
itemImage = models.ForeignKey(Productimage,related_name='photo',default="",)
itemOwner = models.ForeignKey(Customer,related_name='my_items'
                              )
itemAvaialable = models.BooleanField()
costPerItem = models.IntegerField(verbose_name='Cost per Item (USD)')
itemDescription = models.TextField(null=True,blank=True)
itemAddedDate = models.DateField(auto_Now_add=True)
asin = models.CharField(null=True,blank=True,max_length=10)

视图.py

class ImageCreationForm(forms.ModelForm):
class Meta:
    model = Productimage
    fields = ('image',)

def clean_itemImage(self):
    itemImage = self.cleaned_data['itemImage']
    valid_extensions = ['jpg','jpeg']
    extension = itemImage.rsplit('.',1)[1].lower()
    if extension not in valid_extensions:
        raise forms.ValidationError('The given product Image file does not ' \
                                    'match valid image extensions.')
    return itemImage

class ItemCreationForm(forms.ModelForm):
class Meta:
    model = Item
    fields = '__all__'
    widgets = {
        'itemAddedDate': forms.HiddenInput,}

小部件.py

class AddImageView(LoginrequiredMixin,CreateView):
model = Productimage
template_name = 'addImage.html'
fields = ('image',)

def form_valid(self,form):
    form.is_valid()
    form.instance.itemOwner = self.request.user
    return super().form_valid(form)

def get_success_url(self):
    return reverse('RentalApp:my_products')


class AddProductView(LoginrequiredMixin,CreateView):
model = Item
template_name = 'addProduct.html'
image = forms.FileField(required=False)
fields = ('itemName','category','itemImage','itemAvaialable','costPerItem','itemDescription')
login_url = '/users/login/'

def form_valid(self,form):
    form.fields["itemImage"].queryset = Productimage.objects.all()
    form.is_valid()
    form.instance.itemOwner = self.request.user
    return super().form_valid(form)

def get_success_url(self):
    return reverse('RentalApp:my_products')

Serializers.py

class ImageWidget(forms.widgets.Widget):
    def render(self,name,value,attrs=None,**kwargs):
        html = Template("""<img src="$link"/>""")
        return mark_safe(html.substitute(link=value))

用于添加产品的模板:

class ProductimageSerializer(serializers.ModelSerializer):

    product_image = serializers.SerializerMethodField()

    class Meta:
        model = Productimage
        fields = ('image')


class ProductimageRequirementSerializer(serializers.ModelSerializer):
    class Meta:
        model = Productimage
        fields = ('image')


class ProductSerializer(serializers.ModelSerializer):
    Product_requirement = serializers.SlugrelatedField(many=True,read_only=True,slug_field='text')
    club_image = ProductimageSerializer(many=True)

    class Meta:
        model = Productimage
        fields = ('image')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?