【发布时间】:2011-01-24 07:16:48
【问题描述】:
我有一些模型;词汇(标签列表)、标签(标签)和不同的文章类型。
这些文章类型启用了一些词汇,而有些则不启用,例如:图像可以用来自 A、B 的术语进行标记,而新闻文章可以用来自 A 或 C 的术语进行标记。
但这仅存在于数据库级别。
我要做的是根据是否为内容类型启用词汇来输出字段,如下所示:
确定此内容类型是否连接到词汇表。
加载词汇表
为每个词汇表输出一个 CharField 或 Select。
然而,我最后一步的所有努力都失败了,所以我希望有人能指出我正确的方向。
抱歉,我对我使用的代码不是很清楚,所以这里是:
词汇 - 标签
NewsArticle 可以使用来自 vocab 1、3 的标签 博客可以使用来自 vocab 1,2 的标签
此代码获取为内容类型启用的词汇表:
def get_vocabularies(self, type = None):
vocabularies = {}
object = namedtuple("Vocabulary", "vid name desc help relations hierarchy multiple req tags weight")
if (type != None):
vocabs = VocabularyTypes.objects.filter(type=type)
for vocab in vocabs:
v = Vocabulary.objects.get(pk=vocab.vid)
vocabularies[v.vid] = object(vid = v.vid,
name = v.name,
desc = v.desc,
help = v.help,
relations = v.relations,
hierarchy = v.hierarchy,
multiple = v.multiple,
req = v.req,
tags = v.tags,
weight = v.weight
)
else:
vocabs = Vocabulary.objects.all()
for v in vocabs:
vocab = Vocabulary.objects.get(pk=v.vid)
vocabularies[v.vid] = object(vid = vocab.vid,
name = vocab.name,
desc = vocab.desc,
help = vocab.help,
relations = vocab.relations,
hierarchy = vocab.hierarchy,
multiple = vocab.multiple,
req = vocab.req,
tags = vocab.tags,
weight = vocab.weight
)
return vocabularies
所以到目前为止我尝试过的代码是这样的:
def free_tags(self, type):
vocabs = Label.objects.get_vocabularies(type)
for vid in vocabs.keys():
output = forms.CharField(label=vocabs[vid].name,
required = vocabs[vid].req,
widget = forms.TextInput(attrs={'size' : 64})
)
return output
但是,当在视图中使用它时,它会打印出内部 python 标识符(对象实例在 ... 等)。
然而,另一个问题是,这些字段没有名称,即它们都被称为“输出”。
所以我需要了解的是,当字段数未知时,如何输出多个字段。
【问题讨论】:
-
能把目前写的代码贴出来吗?