我基本上有一个用户名是唯一的(不区分大小写),但在用户提供的显示时,情况很重要.
我有以下要求:
Django有可能吗?
我想出的唯一解决方案是"以某种方式"覆盖模型管理器,使用额外的字段,或者总是在搜索中使用'iexact'.
我在Django 1.3和PostgreSQL 8.4.2上.
我有一个型号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
我在我的DataBase中有一个包含两个主键(id和language_id)的表,我需要把它放在我的模型中.Models中的默认primaryKey(Laravel 5中的Model.php)是id,我希望primaryKeys是id和id_language.我尝试用数组或字符串','但它不起作用.它告诉我数组无法在String中转换.
请帮忙.
谢谢!
一个简单的问题,但我找不到答案.
我有一个带有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?
这可能是一个愚蠢的问题!(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语句,或者这只是针对"特定/自定义"映射?
如何使用活动记录实现继承?
例如,我想要一个类Animal,类Dog和类Cat.
模型和数据库表映射将如何?
我在模型中进行了以下验证:
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
我正在试图找出设计导轨模型的最佳方法.出于示例的目的,假设我正在构建一个字符数据库,这可能有几个不同的固定属性.例如:
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的回答.虽然每个人都提出了很好的建议,但就我个人来说,他是最有用的.我之前并没有真正意识到枚举的想法,因此我发现它解决了我在应用程序中遇到的许多问题.我会鼓励发现这个问题的每个人阅读所有的答案,提供了许多好的方法.
使用inspectdb,我能够从postgres到django获得一个"间隔"字段.在Django中,它是一个TextField.我检索到的对象确实是一个timedelta对象!
现在我想将这个timedelta对象放在一个新模型中.最好的方法是什么?因为在TextField中放置timedelta会导致对象的str版本...
我认为问这个问题的最好方法是使用一些代码......我可以这样做吗?(编辑:答案:不)
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'.当您处理现有系统并且不希望无缘无故地进行数据库迁移时,这非常有用
model ×10
django ×4
python ×4
activerecord ×2
database ×2
attributes ×1
automapper ×1
inheritance ×1
laravel ×1
localization ×1
namespaces ×1
orm ×1
php ×1
postgresql ×1
properties ×1
validation ×1
viewmodel ×1
web ×1