Django: возможно ли иметь поле формы со значением, сжатым из поля модели content_object в пользовательской ModelForm? - PullRequest
0 голосов
/ 24 января 2012

Мой models.py выглядит так (частично):

class GalleryItem(models.Model):

    gallery = models.ForeignKey(Gallery)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

    def __unicode__(self):
        return str(self.object_id) 

content_object может указывать на любую модель. Я хочу сжать значения такой модели в одно поле формы. Моя форма выглядит так:

class GalleryAdminForm(ModelForm):

    content_object = TextInput()

    def __init__(self, *args, **kwargs):
        """

        """
        super(GalleryAdminForm, self).__init__(*args, **kwargs)

    class Meta:
        model = GalleryItem 

Возможно ли это. Где я должен зацепиться?

Ответы [ 2 ]

1 голос
/ 24 января 2012

Хорошо. Я понял. Но я думаю, что это грязный способ сделать это:

class GalleryAdminForm(ModelForm):

    content_object = CharField()

    def __init__(self, *args, **kwargs):

        super(GalleryAdminForm, self).__init__(*args, **kwargs)
        related = self.instance.content_object
        if related:
            self.initial['content_object'] = related.title+related.file.__unicode__()

    class Meta:
        model = GalleryItem
0 голосов
/ 24 января 2012

Пожалуйста, посмотрите на https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#generic-relations-in-forms-and-admin и https://docs.djangoproject.com/en/dev/ref/contrib/admin/#using-generic-relations-as-an-inline

В соответствии с этим ваша галерея / admin.py должна содержать:

from django.contrib import admin
from django.contrib.contenttypes import generic
from gallery.models import Gallery, GalleryItem

class GalleryItemInline(generic.GenericTabularInline):
    model = GalleryItem

class GalleryAdmin(admin.ModelAdmin):
    inlines = [
        GalleryItemInline,
    ]

admin.site.register(Gallery, GalleryAdmin)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...