我有一个名为Circuit的模型,在那里我有一个字段'name'。
然后我有另一个叫做CircuitHistoric的模型,外键指向Circuit,还有两个日期。
然后在admin.py中我有一个CircuitAdmin,我想显示CircuitHistoric的日期和属性list_display。
我知道我需要在SQL中使用内部联接但是有没有办法用Django来做?
答案 0 :(得分:1)
由于CircuitHistoric
模型代码不可用,我假设您要获取的两个日期属性名为first_date
和second_date
。
Circuit
要显示与Circuit
个实例相关的日期,您可以在Circuit
模型中定义一些特定方法。
要获取第一个日期,您可以声明此方法(self
是Circuit
个实例):
def get_first_date(self):
return self.circuithistoric_set.first().first_date
circuithistoric_set
从ForeignKey
到Circuit
的反向CircuitHistoric
。
如果您在related_name
的{{1}}上宣布了ForeignKey
,则只需使用此值代替CircuitHistoric
。
circuithistoric_set
用于获取与当前.first()
实例相关的CircuitHistoric
集合的第一个值。
现在,为您的方法提供一个用户友好的名称:
Circuit
当然,您可以将一些特定的日期格式应用于此字段。
此代码将显示找到的第一个相关get_first_date.short_description = "Start date"
实例的日期。
CircuitHistoric
然后在CircuitAdmin
课程中,您可以在CircuitAdmin
属性中调用此方法:
display_list
现在,重新加载您的管理页面,您有一个名为list_display = [
'name',
'get_first_date',
'get_second_date',
]
的新列,它会列出主Start date
个对象的所有相关数据。
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")