首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何引用Django中的一组模型字段?

问如何引用Django中的一组模型字段?
EN

Stack Overflow用户
提问于 2015-08-03 19:30:09
回答 1查看 1.5K关注 0票数 2

假设我有以下Django模型:

代码语言:javascript
复制
class Person(models.Model):
    name = models.CharField()
    age = models.IntegerField()
    country = models.ForeignKey(Country)
    company = models.ForeignKey(Company)

我的应用程序可以根据某些条件搜索人员,然后返回一个包含结果的表,只显示用户请求的特定列。

现在,我希望将搜索和显示的列一起存储在数据库中。

代码语言:javascript
复制
class SavedSearch(models.Model):
    title = models.CharField()
    q_object = models.BinaryField()
    display_fields = ???

从Person模型中存储哪些字段的最佳方法是什么?

目前,我只是将字段名的JSON列表(例如['name','age'])存储在TextField中,但我想知道是否有更好的方法来存储对模型字段的引用。

我还希望能够从相关(通过ForeignKey)模型存储字段。所以有点像['name','age','company__website']。

EN

回答 1

Stack Overflow用户

发布于 2015-08-03 22:45:45

恐怕您不能以这种方式保存对模型字段的引用,但您可以使用一个计算属性,该属性将保存模型名称并按需要返回字段引用-

  • 与字段一起保存模型名。 类SavedSearch(models.Model):title = models.CharField() q_object = models.BinaryField() model_name = models.CharField() # 'app_label.Person‘display_fields = models.CharField() #’姓名,年龄,company__website‘->逗号分隔的房顶
  • 然后添加计算的属性- @property def display_fields_property(self):从django.apps导入应用程序属性= [] #获取使用django.apps model =django.apps model_name=self.model_name.split(‘.’)1的应用程序的模型类,用于self.display_fields.split(',‘,):#从模型类properties.append获取属性(getattr( model,x) # properties包含模型字段的字段引用,返回属性
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31795295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档