私は数日間インターネットを探し回っていましたが、何も見つかりませんでした. ボタンが URL フィールドの後にインラインで表示されるように、django 管理者をカスタマイズしようとしています。ボタンが表示され、javascript が機能しますが、それをマークしているにもかかわらずnull=True
、blank=True
管理者の検証でフィールドが必須であると言い続けられます。URLフィールドをオプションにしたい。
このフィールドをオプションにする方法はありますか? blank=True
との組み合わせnull=True
だと思いますが、いくつかの場所で試してみましたが、うまくいきませんでした。
関連するコード ビットと思われるものを以下に示します (また、ウィジェットからのインライン CSS が悪い考えであることもわかっています。それは、すべてが機能するようになるまでのことです!)。他に何か見る必要がある場合は、お知らせください。
models.py
class Team(models.Model):
name = models.CharField(max_length=64)
name_color = models.CharField(max_length=7, default='#000000')
name_shadow_color = models.CharField(max_length=7, default='#ffffff')
created = models.DateField(editable=True, default=datetime.now)
retired = models.DateField(null=True, blank=True)
url = models.URLField(null=True, blank=True, default=None)
admin.py
class TeamAdmin(admin.ModelAdmin):
list_filter = ('created', 'retired',)
list_select_related = True
list_display = ('name', 'created',)
search_fields = ('name', )
ordering = ('name',)
form = TeamAdminForm
admin_forms.py
class TeamAdminForm(forms.ModelForm):
url = URLActionField()
class Media:
js = ('js/jquery-1.8.0.min.js', 'js/admin/teamform.js', )
class Meta:
model = Team
admin_widgets.py
class URLActionField(forms.TextInput):
def render(self, name, value, attrs=None):
if attrs is None:
attrs = {}
# TODO: not responsive!!
if 'style' not in attrs.keys():
attrs['style'] = 'width: 275px;'
else:
attrs['style'] = '%s width: 275px;' % attrs['style']
attrs['required'] = False
attrs['blank'] = True
attrs['null'] = True
output = []
output.append(super(URLActionField, self).render(name, value, attrs))
output.append(' <input type="button" value="%s" style="width: 200px; margin-left: 20px; height: 24px; line-height: 15px;" class="grp-button" id="url-scraper">' % unicode(_(u'Scrape URL for data')))
return mark_safe(u''.join(output))
前もって感謝します。