开发者

How can I let a user to post several images to one model?

I have one listing model :

class Listing(models.Model):

    owner = models.ForeignKey(User, verbose_name=_('offerer'))
    title = models.CharField(_('Title'), max_length=255)
    slug = models.CharField(editable=False, max_length=255)
    price = models.PositiveIntegerField(_("Price"), null=True, blank=True)
    description = models.TextField(_('Description'))
    time = models.DateTimeField(_('Created time'), 
        default = datetime.now,
开发者_StackOverflow中文版        editable = False
    )

Then I have one ListingImage, which holds the pictures of the listing:

from photologue.models import ImageModel

class ListingImage(ImageModel):

    pictures = models.ForeignKey(Listing, related_name="images")

forms.py

class ListingForm(forms.ModelForm):

    class Meta:
        model = Listing
        exclude = ('owner',) 

    def __init__(self, *args, **kwargs):
        super(ListingForm, self).__init__(*args, **kwargs)

Why in the upload page , there is no field to upload a picture??


ListingImage has a ForeignKey to Listing, so a ModelForm for Listing has nothing to do with ListingImage.

You shouldn't be expecting a ModelForm for the Listing model to show you anything but the Listing model. ListingImage is a reverse relationship to the Listing model.

If this was a ModelAdmin, you'd get the admin site to show you these reverse relationships by defining inlines: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin

Since it doesn't look like you're talking about the admin panel, you're looking at InlineModelFormsets: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-an-inline-formset-in-a-view

Also, you could show us your views so that we can see the whole picture.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜