小编Mic*_* Xu的帖子

从导入的应用程序覆盖模型的 __str__(self)

我面临以下情况:我有一个 django 项目,它使用外部应用程序 [App1]。在 App1 中,它具有以下结构:

  1. 抽象类“基础”:

    class Base(models.Model):
        """
        Base model with boilerplate for all models.
        """
    
        name = models.CharField(max_length=200, db_index=True)
        alternate_names = models.TextField(null=True, blank=True, 
        default='')
        ..............
        ..............
        class Meta:
            abstract = True
    
       def __str__(self):
            display_name = getattr(self, 'display_name', None)
            if display_name:
                return display_name
    
       return self.name
    
    Run Code Online (Sandbox Code Playgroud)
  2. 基于“Base”的抽象类,称为“AbstractClassA”:

    class AbstractClassA(Base):
    
        display_name = models.CharField(max_length=200)
        ....
        ....
    
        class Meta(Base.Meta):
            abstract = True
    
        def get_display_name(self):
            ....
            ....
            return ....
    
    Run Code Online (Sandbox Code Playgroud)
  3. 非抽象类类 ClassA(AbstractClassA)

现在,当我在视图中对此 ClassA 进行查询时,例如:

    qs = ClassA.objects.filter(Q(name__icontains=query_term)....)
    return qs
Run Code Online (Sandbox Code Playgroud)

我将这个 qs 输入另一个外部应用程序(自动完成),这样当我在我的网络表单上输入“xxxx”时,表单会根据这个 qs …

django django-models django-autocomplete-light

3
推荐指数
2
解决办法
1589
查看次数