Django模型和Django管理员

时间:2016-10-15 09:38:01

标签: django django-models

我有一个名为Circuit的模型,在那里我有一个字段'name'。

然后我有另一个叫做CircuitHistoric的模型,外键指向Circuit,还有两个日期。

然后在admin.py中我有一个CircuitAdmin,我想显示CircuitHistoric的日期和属性list_display。

我知道我需要在SQL中使用内部联接但是有没有办法用Django来做?

2 个答案:

答案 0 :(得分:1)

由于CircuitHistoric模型代码不可用,我假设您要获取的两个日期属性名为first_datesecond_date

models.py: Circuit

要显示与Circuit个实例相关的日期,您可以在Circuit模型中定义一些特定方法。

要获取第一个日期,您可以声明此方法(selfCircuit个实例):

def get_first_date(self):
    return self.circuithistoric_set.first().first_date

circuithistoric_setForeignKeyCircuit的反向CircuitHistoric

如果您在related_name的{​​{1}}上宣布了ForeignKey,则只需使用此值代替CircuitHistoric

circuithistoric_set用于获取与当前.first()实例相关的CircuitHistoric集合的第一个值。

现在,为您的方法提供一个用户友好的名称:

Circuit

当然,您可以将一些特定的日期格式应用于此字段。

此代码将显示找到的第一个相关get_first_date.short_description = "Start date" 实例的日期。

admin.py: CircuitHistoric

然后在CircuitAdmin课程中,您可以在CircuitAdmin属性中调用此方法:

display_list

现在,重新加载您的管理页面,您有一个名为list_display = [ 'name', 'get_first_date', 'get_second_date', ] 的新列,它会列出主Start date个对象的所有相关数据。

您可以在official Django doc

中找到有关Circuit属性的更多信息

如果您有下一个问题,请发布您的型号代码。这将使您的问题更容易阅读和理解。

答案 1 :(得分:0)

试试这样:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
   <!-- <script type="text/javascript" language="javascript" charset="utf-8" src="nav.js"></script> -->
<!--[if lt IE 9]>
  <script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->


  <script>
  $(document).ready(function(){
  $("#nav > li > a").on("click", function(e){
    if($(this).parent().has("ul")) {
      e.preventDefault();
    }

    if(!$(this).hasClass("open")) {
      // hide any open menus and remove all other classes
      $("#nav li ul").slideUp(350);
      $("#nav li a").removeClass("open");
      
      // open our new menu and add the open class
      $(this).next("ul").slideDown(350);
      $(this).addClass("open");
    }
    
    else if($(this).hasClass("open")) {
      $(this).removeClass("open");
      $(this).next("ul").slideUp(350);
    }
  });
});
</script>

在admin.py

# models.py

class CircuitHistoric(models.Model):
    date1 = models.DateTimeField()
    date2 = models.DateTimeField()

class Circuit(models.Model):
    name = models.ForeignKey("CircuitHistoric")