默认情况下选择第一张图片作为 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
带有 Select Widget 的 Django ModelForm - 使用 object.uid 作为默认选项值而不是 object.id