我在models.py
中有很多类,如:
class SomeClass1(BaseModel):
question = models.ForeignKey(Question)
image = models.ForeignKey(Image)
class SomeClass2(BaseModel):
question = models.ForeignKey(Question)
option_text = models.TextField()
现在,我想将app_label = 'my_app_label1'
添加到所有这些类中,如下所示:
class SomeClass1(BaseModel):
question = models.ForeignKey(Question)
image = models.ForeignKey(Image)
class Meta:
app_label = 'my_app_label1'
但是因为有很多类,所以不是将app_label = 'my_app_label1'
添加到所有类中,而是将app_label = 'my_app_label1'
添加到BaseModel,如下所示:
class BaseModel(models.Model):
"""
For future abstraction.
"""
class Meta:
app_label = 'ques_app_data'
之后我收到了这个错误:
myapp.SomeClass1.basemodel_ptr: (fields.E300) Field defines a relation with model 'BaseModel', which is either not installed, or is abstract.
任何人都可以解释如何解决这个问题吗?
答案 0 :(得分:2)
尝试在var quote;
$(".price").text("please");
$(document).ready(function() {
$.ajax({
url: "//query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%3D%22AAPL%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=quote",
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "quote"
});
quote = function(data) {
$(".price").text(data.query.created);
};
});
内abstract=True
课程中指定BaseModel
。
Meta
然后在模型类中继承此class BaseModel(models.Model):
"""
For future abstraction.
"""
class Meta:
abstract=True # specify this model as an Abstract Model
app_label = 'ques_app_data'
类。
所有子模型类都继承父BaseModel
类的Meta
类属性。 Django将对一个抽象基类的BaseModel
类进行一次调整,然后在子类中安装Meta
属性之前,它会设置Meta
。这样做是为了使抽象基类的子节点不会自动成为抽象类。
完成此操作后,您需要再次运行迁移。
注意:项目中必须有一个名为abstract=False
的应用才能生效。
答案 1 :(得分:0)
这篇文章回答了这个问题: makemigrations not detecting changes for Extended Models in Django 1.7
有两个要点:
1)我们必须
class Meta:
abstract = True
在BaseClass中
2)app_label
ques_app_data必须包含在INSTALLED_APPS