我正在尝试从GenericForeignKey中检索字段,并且无法使其在model.py中运行 - 但它在admin.py中工作。
models.py:
class Run(models.Model):
name = models.CharField(max_length=100)
class TaskRunRelation(models.Model):
limit = models.Q(app_label = 'thisapp', model = 'run') | models.Q(app_label = 'thisapp', model = 'runb')
content_type = models.ForeignKey(ContentType, limit_choices_to = limit)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
def modeltestname(self):
self.content_object.name
admin.py:
class TaskRelationAdmin(admin.ModelAdmin):
list_display = ['modeltestname','mytestname']
def mytestname(self,obj):
return obj.content_object.name
因此mytestname在Admin中显示正确的值,而modeltestname显示“(None)”。为什么这不适用于model.py?我错过了Genericforeignkey的工作原理,还是其他任何错误?
答案 0 :(得分:1)
这是因为你没有从std::map<int, std:string> tagMap = {{1, "data"},{2,"entry"},{3,"id"}}
....
/* ORIGINAL
for (auto& node: doca.child("data").children("entry")) {
const char* id = node.child_value("id");
mapa[id] = node;
}
*/
for (auto& node: doca.child(tagMap.find(1)).children(tagMap.find(2))) {
const char* id = node.child_value(tagMap.find(3));
mapa[id] = node;
}
返回任何内容。如果函数或方法没有明确返回任何内容,则默认情况下它将返回modeltestname
。因此结果
所以将类方法更改为
None