【问题标题】:Does South handle model mixins?South 是否处理模型混合?
【发布时间】:2013-06-24 23:55:30
【问题描述】:

我创建了一个 mixin,并在某些模型中继承了它。问题是当我创建模式迁移时,mixin 的字段就在那里。

class MyMixin(object):
    a_field = models.CharField(max_length=30, blank=True)
    another_field = models.DateTimeField(blank=True, null=True)

    class Meta:
        abstract = True


class MyModel(models.Model, myMixin):
    ...

有什么想法吗?

【问题讨论】:

  • South 是否正在为 MyMixin 创建表?如果是这样,则可能是元信息的缩进问题。如果您的缩进是正确的,并且您的意思是 South 将字段添加到 MyModel,那么它会按预期工作。 docs.djangoproject.com/en/dev/topics/db/models/… 模型继承选项 1。
  • 修复class Meta:class MyMixin 中的缩进
  • 缩进问题已修复(这只是我帖子中的一个问题,我的实际代码对 Meta 有正确的缩进)

标签: django django-south mixins


【解决方案1】:

似乎已经使用以下方法使其工作

class MyMixin(models.Model):
    a_field = models.CharField(max_length=30, blank=True)
    another_field = models.DateTimeField(blank=True, null=True)

    class Meta:
        abstract = True


class MyModel(myMixin, models.Model):
    ...

变化是:

  • MyMixin 继承 Model 而不是对象(尽管很多讨论都说 django 的 mixin 应该继承对象而不是 Model)
  • MyModel 的继承顺序 - mixin 必须放在第一位

【讨论】:

    猜你喜欢
    • 2019-02-27
    • 2013-10-06
    • 2016-03-17
    • 1970-01-01
    • 2020-09-04
    • 2011-07-12
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    相关资源
    最近更新 更多