models.ForeignKey のサブクラスがあります。その唯一の目的は、カスタム ウィジェットを使用することです。
from django.db import models
from .models import Images
class GAEImageField(models.ForeignKey):
def __init__(self, **kwargs):
super(GAEImageField, self).__init__(Images, **kwargs)
def formfield(self, *args, **kwargs):
field = forms.ModelChoiceField(self, widget=ImageUploadWidget, *args, **kwargs)
field.queryset = Images.objects.all()
return field
問題は、このフィールドを使用しようとすると、すべてのパラメーター__init__
が無視されることです。たとえば、このモデルを試してみると:
class SomethingWithImage(models.Model):
name = models.CharField('Awesome name', max_length=64)
image = GAEImageField(verbose_name='Awesome image', blank=True)
...verbose_name を指定したにもかかわらず、生成されたフォームのラベルは「Image」になり、空の値を指定しようとすると、blank=True を使用してもエラーが発生します