2013-06-27 41 views
4

我創建了一個mixin,並在某些模型中繼承它。問題是當我創建模式遷移時,mixin的字段在那裏。South處理模型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): 
    ... 

任何想法?

+0

南是爲MyMixin創建一個表嗎?如果是這樣,它可能是元信息的縮進問題。如果您的縮進是正確的,並且您的意思是South正在將這些字段添加到「MyModel」,那麼它的工作方式與預期的一樣。 https://docs.djangoproject.com/en/dev/topics/db/models/#model-inheritance模型繼承選項1. – AndrewS

+0

修復'class Meta:'class MyMixin'中的縮進問題 – karthikr

+0

修復縮進問題(此問題在我的文章中只是一個問題,我的實際代碼對Meta有正確的縮進) – askvictor

回答

5

似乎已經得到它的工作使用以下

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繼承模型,而不是目的(儘管周圍的地方很多討論說,Django的混入應繼承對象而不是型號)
  • MyModel的繼承順序 - mixin必須先到達