[英]Django Model Mixins - Fields Ordering
我目前正在試驗模型混合器,其想法是建立一個包含小型抽象混合器類的小型庫,以定義常用字段。
這是我目前正在玩的游戲:
class HtmlAttrsMixin(models.Model):
css_classes = models.CharField(
max_length=256,
verbose_name=_('CSS Classes'),
blank=True,
)
class Meta:
abstract = True
class LinkHtmlAttrsMixin(HtmlAttrsMixin):
target_blank = models.BooleanField(
default=False,
verbose_name=_('Open in a new window /tab'),
)
title = models.CharField(
max_length=512,
verbose_name=_('Title'),
blank=True,
)
class Meta:
abstract = True
class URLMixin(models.Model):
label = models.CharField(
max_length=256,
verbose_name=_('Name'),
blank=True,
)
url = models.CharField(
max_length=4000,
verbose_name=_('URL'),
blank=True,
)
class Meta:
abstract = True
# Concrete model implementing the above mixins:
class TagLine(URLMixin, LinkHtmlAttrsMixin):
enabled = models.BooleanField(_("enabled"), default=True)
def __unicode__(self):
return self.label
到目前為止,這工作正常,但是有些地方我不太了解。
我希望能夠通過簡單地以不同順序聲明mixins來確定繼承字段的順序。 據我所知,默認字段排序基於在模型類上聲明的順序,而python將按照列出它們的順序遍歷基類,從而解析屬性名稱。例如,我希望css_classes
, target_blank
和title
字段在管理站點中的label
& url
之后列出,反之亦然,如果我顛倒了聲明中兩個mixins的順序。
但是,無論我如何列出mixins,“ html_attrs”字段都會始終顯示在最前面。 它們被組合在一起(由於它們屬於同一類,因此看起來很合理),但是我似乎無法以這種方式強制排序。
我知道這是一個微不足道的問題-我可以通過管理字段集解決此問題,無論如何,這將變得更加靈活。 這似乎是我希望可以使用的便捷技巧,所以我只是想了解為什么不起作用。
(此外,如果有人對模型混合模塊有任何一般性建議,我都會聽到-我已經找到了一些信息,但數量不多,而google for django models mixins
Google往往會返回很多有關CBV混合模塊的結果,我目前感興趣的是什么。
感謝所有願意回答的人!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.