默认情况下选择第一张图片作为 modelformset_factory 的特色

Posted

技术标签:

【中文标题】默认情况下选择第一张图片作为 modelformset_factory 的特色【英文标题】:making the first image select by default as featured from the modelformset_factory 【发布时间】:2017-10-12 12:31:49 【问题描述】:

我需要让第一张图片默认被选为特色图片。目前它有效,但仅当用户选择特色图像时。

Forms.py

class ImageForm(forms.ModelForm):
image = forms.ImageField(label='Image')  
def __init__ (self, *args, **kwargs):
    super(ImageForm, self).__init__(*args, **kwargs)
    self.fields['featured'] = forms.BooleanField( widget = forms.Radioselect(choices=((self.prefix, 'featured'),)))

    class Meta:
    model = Images
    fields = ['image', 'featured', ]

models.py

from __future__ import unicode_literals

from django.db import models
from django.contrib.auth.models import User
from django.utils.text import slugify
# Create your models here.


class Post(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=128)
body = models.CharField(max_length=400)

def __str__(self):
    return self.title

def get_image_filename(instance, filename):
title = instance.post.title
slug = slugify(title)
return "post_images/%s-%s" % (slug, filename)  




class Images(models.Model):
post = models.ForeignKey(Post, default=None)
image = models.ImageField(upload_to=get_image_filename,
                          verbose_name='Image', )
featured = models.BooleanField(default=True)

【问题讨论】:

【参考方案1】:

要预先检查单选按钮,请将checked 属性传递给RadioSelect。要检查 html 单选按钮,您将使用:

<input type="radio" checked>

其中checked 是输入元素的布尔属性。所以添加一个attrs dict来设置属性:

widget = forms.RadioSelect(attrs='checked': 'true', choices=((self.prefix, 'featured'),))

【讨论】:

它真的对我有用,谢谢。它扭曲了我 嘿,这确实在 FBV 中工作,但它在基于类的视图中显示复选框。

以上是关于默认情况下选择第一张图片作为 modelformset_factory 的特色的主要内容,如果未能解决你的问题,请参考以下文章

javascript获取页面第一张图片的方法是啥?我忘记了~~~就是在不知道id和name的情况下获取第一张图片的src

如何删除或更改docx中的图片?

用vue写一个轮播图效果

pr这种情况怎么办,右边为啥会放大,急!!!真心求助

在博客文章中找到第一张图片并将其作为缩略图返回

带有 Select Widget 的 Django ModelForm - 使用 object.uid 作为默认选项值而不是 object.id