Skip to main content
 首页 » 编程设计

python之Django admin之在同一页面上编辑父模型和相关模型

2025年05月04日23dyllove98

我希望能够在一页上编辑所有数据。我怎样才能做到这一点?我应该修改我的模型吗?如果是这样,那么我应该如何修改它们?

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) 

请您参考如下方法:

您需要在 admin.py 中创建一个内联模型。请参阅:InlineModelAdmin .