父类可以检查子类是否有这样的字段?

时间:2017-07-07 21:35:22

标签: django inheritance field instance

我知道我们可以从孩子那里引用父母的模型,但有没有办法让它以另一种方式出现?

抱歉这里有任何错字。

如果父母是

,那就说吧
class Parent(Model):
    has_this = models.Charfield(max_length=128)

class Child(Parent):
    has_that = models.Boolean(default=True)

ch = Child.objects.filter(id=1).first()  // this will be instance of both Parent and Child as expected

pa = Parent.objects.filter(id=1).first() // is actually return the same as above but does not has the `Child` field `has_that`

我的问题是,如果使用pa

调用查询,Parent是否可以与常规Parent.objects.filter区分开来?

我尝试使用isisntance,但对于pa,只有Parent ch Parent才真正使用hasattr都。我想不出另一种区别于此的方法。

此外,var $input = $('.datepicker').pickadate() var picker = $input.pickadate('picker'); picker.stop(); picker.start(); $.get("/dates", { id: this.value }, function(data) { let value=[]; $.each(data, function(key, element) { let fecha=new Date(element.date); value.push([fecha.getFullYear(), fecha.getMonth(), fecha.getDate()+1]); }); picker.set('disable', value); picker.set('disable', 'flip'); picker.open(false); }); 不会是抽象的。

P.S。我想过使用arr = np.random.choice(df['groups'], p=df['probability'], size=10000, replace=True) ,但这也行不通。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用子类作为字段名称来引用子类属性:

Parent.objects.filter(child__isnull=True)

产生所有裸Parent个实例(不是子项)。

但是,当你有多个派生类时,这会有点笨拙。

显然,您也可以通过父类以这种方式查询子字段:

Parent.objects.filter(child__has_that=True)

会产生Parent的{​​{1}}个实例,Children的{​​{1}}设置为has_that