Администратор Django - Редактирование родительской модели и связанных моделей на одной странице - PullRequest
2 голосов
/ 28 июня 2010

Я хочу иметь возможность редактировать все данные на одной странице. Как я могу достичь этого? Должен ли я изменить свои модели? Если так, то как мне их изменить?

class TextStyle(models.Model):
    color = models.CharField(_("color"), max_length=7)
    style = models.CharField(_("style"), max_length=30)
    typeface = models.CharField(_("typeface"), max_length=100)

class GenericText(models.Model):
    text = models.TextField(_("text"))
    lines = models.IntegerField(_("number of lines"))
    style = models.ForeignKey(TextStyle, verbose_name=_('text style'), blank=False)


class ExpirationDate(models.Model):
    date = models.DateField(_("date"))
    style = models.ForeignKey(TextStyle, verbose_name=_('text style'), blank=False)

class Coupon(models.Model):
    name = models.CharField(_("name"), max_length=100)
    slug = AutoSlugField(populate_from="title")
    background = models.ImageField(upload_to="userbackgrounds")
    layout = models.ForeignKey(Layout, verbose_name=("layout"), blank=False)
    logo = models.ImageField(upload_to="logos")
    title = models.OneToOneField(GenericText, verbose_name=("title"), blank=False, related_name="coupon_by_title")
    body = models.OneToOneField(GenericText, verbose_name=("body"), blank=False, related_name="coupon_by_body")
    disclaimer = models.OneToOneField(GenericText, verbose_name=("disclaimer"), blank=False, related_name="coupon_by_disclaimer")
    promo_code = models.OneToOneField(GenericText, verbose_name=("promo code"), blank=False, related_name="coupon_by_promo")
    bar_code = models.OneToOneField(BarCode, verbose_name=("barcode"), blank=False, related_name="coupon_by_barcode")
    expiration = models.OneToOneField(ExpirationDate, verbose_name=("expiration date"), blank=False, related_name="coupon_by_expiration")
    is_template = models.BooleanField( verbose_name=("is a template"), )
    category = models.ForeignKey(Category, verbose_name=("category"), blank=True,null=True, related_name="coupons")
    user = models.ForeignKey(User, verbose_name=("user"), blank=False)

Ответы [ 2 ]

1 голос
/ 28 июня 2010

Вам необходимо создать встроенную модель в вашем admin.py. См .: InlineModelAdmin .

0 голосов
/ 11 августа 2010

Я создал модуль для встроенного редактирования отношений OneToOne, который я назвал ReverseModelAdmin. Вы можете найти это здесь .

Вы можете использовать его в своей сущности Coupon, чтобы встроить все отношения OneToOne следующим образом:

class CouponAdmin(ReverseModelAdmin):
    inline_type = 'tabular'
admin.site.register(Coupon, CouponAdmin)

Будьте бдительны. Мне пришлось взломать множество внутренних устройств, чтобы заставить его работать, поэтому решение хрупкое и может легко сломаться.

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