1

私は次のモデルを持っています:

class Quiver(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    is_default = models.BooleanField(default=False)
    type = models.CharField(max_length=1, choices=QUIVER_TYPES)
    category = models.CharField(max_length=255, choices=QUIVER_CATEGORIES)

    def __unicode__(self):
        return u'[%s] %s %s quiver' % (
            self.user.username,
            self.get_type_display(),
            self.get_category_display())


class Image(models.Model):
    photo = models.ImageField(upload_to=get_upload_file_path)
    is_cover = models.BooleanField(default=False)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey()

    def save(self, *args, **kwargs):
        try:
            this = Image.objects.get(pk=self.pk)
            if this.photo != self.photo:
                this.photo.delete(save=False)
        except Image.DoesNotExist:
            pass

        super(Image, self).save(*args, **kwargs)


class Surfboard(models.Model):
    quiver = models.ForeignKey(Quiver)
    brand = models.CharField(max_length=255)
    model = models.CharField(max_length=255)
    length = models.CharField(max_length=255)
    width = models.CharField(max_length=255, blank=True)
    thickness = models.CharField(max_length=255, blank=True)
    volume = models.CharField(max_length=255, blank=True)
    images = generic.GenericRelation(Image)

    def __unicode__(self):
        return u'%s %s %s' % (self.length, self.brand, self.model)

    def get_cover_image(self):
        "Returns the cover image from the images uploaded or a default one"
        for image in self.images.all():
            if image.is_cover:
                return image

        return None

フロントエンド ビュー /surfboard/add で、管理者にあるのと同じフォームを使用できるようにしたいと思います。

ドロップダウンで外部キーを使用してサーフボードを追加し、画像を追加します

新しい Django ファンおよびユーザーとして、フォームをゼロから作成し始めました。外部キー「震え」をドロップダウンリストとして含めて、私が望むことを行うことができないので、ドキュメントでModelFormを見つけ、それを使用することにしたので、ここで私が得たもの:

class SurfboardForm(ModelForm):
    class Meta:
        model = Surfboard

私の見解では、それは次のように見え、すでに良いスタートを切っています。

ここに画像の説明を入力

そこで、複数の写真を同時に追加する方法が必要でした。これらの写真は、ジェネリック リレーションを介してサーフボードにリンクされています。ここで、管理者のように実装を行う方法が見つからず、イライラします。そうするためのヒントはありますか?

ありがとう!

4

1 に答える 1