标签: model

Django中不区分大小写的独特模型字段?

我基本上有一个用户名是唯一的(不区分大小写),但在用户提供的显示时,情况很重要.

我有以下要求:

  • 字段是CharField兼容的
  • 字段是唯一的,但不区分大小写
  • 字段需要可搜索忽略大小写(避免使用iexact,容易被遗忘)
  • 字段存储与案例完整
  • 最好在数据库级别强制执行
  • 最好避免存储额外的字段

Django有可能吗?

我想出的唯一解决方案是"以某种方式"覆盖模型管理器,使用额外的字段,或者总是在搜索中使用'iexact'.

我在Django 1.3和PostgreSQL 8.4.2上.

python django postgresql model

43
推荐指数
5
解决办法
2万
查看次数

如何在Ruby类/模块命名空间中翻译模型?

我有一个型号Products :: Car.我该如何翻译其属性?

我已经尝试过了:

activerecord: 
  models:
    products:
      car: "??????????"
  attributes:
    products:
      car:
        owner: "????????"
Run Code Online (Sandbox Code Playgroud)

还有这个:

activerecord: 
  models:
    products_car: "??????????"
  attributes:
    products_car:
      owner: "????????"
Run Code Online (Sandbox Code Playgroud)

但如果我尝试使用Products :: Car.model_name.human,它仍然会说"Car".我的其他翻译工作得很好,语言设置为:ru.

localization namespaces model ruby-on-rails internationalization

42
推荐指数
1
解决办法
8075
查看次数

如何在Laravel 5中将复合键放入模型中?

我在我的DataBase中有一个包含两个主键(id和language_id)的表,我需要把它放在我的模型中.Models中的默认primaryKey(Laravel 5中的Model.php)是id,我希望primaryKeys是id和id_language.我尝试用数组或字符串','但它不起作用.它告诉我数组无法在String中转换.

请帮忙.

谢谢!

php model composite-primary-key web laravel

42
推荐指数
4
解决办法
5万
查看次数

如何迭代ManyToManyField?

一个简单的问题,但我找不到答案.

我有一个带有ManyToMany字段的模型:

class Stuff(models.Model):
  things = models.ManyToManyField(Thing)
Run Code Online (Sandbox Code Playgroud)

然后在一个不同的功能,我想这样做:

myStuff = Stuff.objects.get(id=1)
for t in myStuff.things.all:
  # ...
Run Code Online (Sandbox Code Playgroud)

但这给了我:

TypeError: 'instancemethod' object is not iterable
Run Code Online (Sandbox Code Playgroud)

如何迭代manyToManyField?

python database django orm model

40
推荐指数
1
解决办法
3万
查看次数

我是否需要以两种方式创建automapper createmap?

这可能是一个愚蠢的问题!(n00b到AutoMapper和时间短!)

我想使用AutoMapper从EF4实体映射到ViewModel类.

1)如果我打电话

CreateMap<ModelClass, ViewModelClass>()
Run Code Online (Sandbox Code Playgroud)

然后我也需要打电话

CreateMap<ViewModelClass, ModelClass>()
Run Code Online (Sandbox Code Playgroud)

执行相反的操作?

2)如果两个类具有相同的属性名称,那么我是否需要一个CreateMap语句,或者这只是针对"特定/自定义"映射?

model viewmodel automapper asp.net-mvc-3

39
推荐指数
3
解决办法
1万
查看次数

如何在Ruby on Rails中实现Active Record继承?

如何使用活动记录实现继承?

例如,我想要一个类Animal,类Dog和类Cat.

模型和数据库表映射将如何?

database inheritance activerecord model ruby-on-rails

38
推荐指数
3
解决办法
3万
查看次数

模型验证中的Rails国际化(I18n):可能与否?

我在模型中进行了以下验证:

validates_inclusion_of :whatever, :in => [true, false], :message => I18n.t('please_select_whatever')
Run Code Online (Sandbox Code Playgroud)

似乎翻译在生产模式下不起作用:在所有语言中,它始终是英语翻译(可能因为我将英语设置为我的应用程序中的默认语言环境......?).

所以我假设我们不能在模型中转换验证,因为模型只加载一次 - 当服务器被引导时(然后,将应用默认的语言环境).

我对吗?如果是的话,你会如何解决这个问题?

谢谢你的帮助!

validation model ruby-on-rails internationalization production-environment

38
推荐指数
3
解决办法
2万
查看次数

Rails模型:您将如何创建预定义的属性集?

我正在试图找出设计导轨模型的最佳方法.出于示例的目的,假设我正在构建一个字符数据库,这可能有几个不同的固定属性.例如:

Character
- Morality (may be "Good" or "Evil")
- Genre (may be "Action", "Suspense", or "Western")
- Hair Color (may be "Blond", "Brown", or "Black")
Run Code Online (Sandbox Code Playgroud)

... 等等.

因此,对于Character模型,有几个属性,我希望基本上有一个固定的可能选择列表.

我希望用户能够创建一个角色,并希望他们从每个可用选项中选择一个.我还希望能够让用户使用这些属性中的每一个进行搜索...(即,"显示'好'中的字符',来自'悬疑'类型,并且具有'棕色'头发".

我可以想到几种方法来做到这一点......


1:为每个属性创建一个字符串并验证有限的输入.

在这种情况下,我将在字符表上定义一个字符串列"Morality",然后使用其中指定的选项具有类常量,然后针对该类常量进行验证.

找到好的角色就好Character.where(:morality=>'Good').

这很简单,缺点是如果我想为属性添加更多细节,例如描述"Good"和"Evil",以及用户可以查看给定道德的所有字符的页面.

2:为每个属性创建一个模型

在这种情况下Character belongs_to Morality,会有一个Morality模型和一个moralities包含两个记录的表:Morality id:1, name:Good等等.

找到好的角色就像Morality.find_by_name('Good').characters......或者 Character.where(:morality=> Morality.find(1).

这样可以正常工作,但这意味着您有几个表只存在少量预定义属性.

3:为属性创建STI模型

在这种情况下,我可以像#2一样,除了创建一个通用的"CharacterAttributes"表,然后将其子类化为"MoralityAttribute"和"GenreAttribute"等.这使得只有一个表用于许多属性,否则它看起来大致相同作为想法#2.


所以,这些是我能想到解决这个问题的三种方式.

我的问题是,你将如何实现这一点,为什么?

你会使用上面的方法之一,如果是这样的话?你会做些不同的事吗?我特别有兴趣听听您将采取的方法的性能考虑因素.我知道这是一个广泛的问题,谢谢你的任何意见.

编辑: 我在这个问题上添加了250的赏金(超过我的声誉的10%!!),因为我可以真正使用一些更多关于利弊/选项的扩展讨论.如果有人能给我一个非常可靠的例子说明他们采取了哪种方法以及为什么它值得+250,那么我会放弃给那些有建设性的东西的人投票.

我真的很痛苦我的应用程序的这方面的设计,现在是时候实现它.在此先感谢任何有益的讨论!!


最后注意:

谢谢大家的深思熟虑和有趣的答案,所有这些都很好,对我很有帮助.最后(在赏金到期之前就来了!)我非常感谢Blackbird07的回答.虽然每个人都提出了很好的建议,但就我个人来说,他是最有用的.我之前并没有真正意识到枚举的想法,因此我发现它解决了我在应用程序中遇到的许多问题.我会鼓励发现这个问题的每个人阅读所有的答案,提供了许多好的方法.

activerecord attributes model ruby-on-rails ruby-on-rails-3

38
推荐指数
2
解决办法
8323
查看次数

如何将timedelta放入django模型?

使用inspectdb,我能够从postgres到django获得一个"间隔"字段.在Django中,它是一个TextField.我检索到的对象确实是一个timedelta对象!

现在我想将这个timedelta对象放在一个新模型中.最好的方法是什么?因为在TextField中放置timedelta会导致对象的str版本...

python django model

37
推荐指数
4
解决办法
3万
查看次数

属性是否适用于django模型字段?

我认为问这个问题的最好方法是使用一些代码......我可以这样做吗?(编辑:答案:不)

class MyModel(models.Model):    
    foo = models.CharField(max_length = 20)    
    bar = models.CharField(max_length = 20)  

    def get_foo(self):  
        if self.bar:  
            return self.bar  
        else:  
            return self.foo  

    def set_foo(self, input):  
        self.foo = input  

    foo = property(get_foo, set_foo)  
Run Code Online (Sandbox Code Playgroud)

或者我必须这样做:

是的,你必须这样做:

class MyModel(models.Model):
    _foo = models.CharField(max_length = 20, db_column='foo')
    bar = models.CharField(max_length = 20)

    def get_foo(self):
        if self.bar:
            return self.bar
        else:
            return self._foo

    def set_foo(self, input):
        self._foo = input

    foo = property(get_foo, set_foo)
Run Code Online (Sandbox Code Playgroud)

注意:通过将db_column传递给模型字段,可以将列名保留为数据库中的'foo'.当您处理现有系统并且不希望无缘无故地进行数据库迁移时,这非常有用

python django model properties

37
推荐指数
3
解决办法
3万
查看次数