我想知道是否有可能在Django中的models.py文件中定义一个外键,这是另一个应用程序中表的引用? 换句话说,我有两个应用程序,称为cf和configuration文件,并在cf / models.py我有(其中包括): class Movie(models.Model): title = models.CharField(max_length=255) 并在configuration文件/ models.py我想要: class MovieProperty(models.Model): movie = models.ForeignKey(Movie) 但是我无法让它工作。 我试过了: movie = models.ForeignKey(cf.Movie) 我试过在models.py的开头导入cf.Movie,但是我总是得到错误,比如: NameError: name 'User' is not defined 我试图以这种方式将两个应用程序绑定在一起,或者我刚刚得到的语法错误?
假设我有一个模型: class SomeModel(models.Model): id = models.AutoField(primary_key=True) a = models.CharField(max_length=10) b = models.CharField(max_length=7) 目前我正在使用默认的pipe理员来创build/编辑这种types的对象。 如何从pipe理员删除字段b ,以便每个对象不能创build一个值,而是会收到一个默认值0000000 ?
在auth_user上运行alter table以使用username变成varchar(75)是否有什么问题? 如果有什么打破了什么? 如果您要将auth_user.username更改为varchar(75) ,那么您需要修改django吗? 这只是一个在源代码中改变30到75的问题吗? username = models.CharField(_('username'), max_length=30, unique=True, help_text=_("Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters")) 还是还有其他的validation,在这个领域将不得不改变或任何其他影响这样做? 请参阅下面的bartek讨论关于做这件事的原因。 编辑 :在几个月后回顾这个。 对于任何人不知道的前提:有些应用程序没有要求或希望使用用户名,他们只使用电子邮件注册和身份validation。 不幸的是,在django auth.contrib中,用户名是必需的。 您可以开始在用户名字段中input电子邮件,但该字段只有30个字符,并且电子邮件在现实世界中可能很长。 可能甚至比75字符在这里build议更长,但75字符容纳最理智的电子邮件地址。 这个问题就是针对这种情况,正如基于电子邮件authentication的应用程序所遇到的那样。
我想要做的是这样的: 得到最高得分的30位作者( Author.objects.order_by('-score')[:30] ) 以last_name命令作者 有什么build议么?
我已经定义了一个模型,并通过manager.py syncdb创build了相关的数据库。 现在,我已经添加了一些字段到模型,我再次尝试syncdb ,但没有输出显示。 试图从我的模板中访问这些新的领域,我得到一个“没有这样的列”exception,导致我相信syncdb并没有实际更新数据库。 这里有什么正确的命令?
有可能做一些类似于这个与列表,字典或其他什么东西甚至? data_dict = { 'title' : 'awesome title', 'body' : 'great body of text', } Model.objects.create(data_dict) 如果我可以扩展它就更好了 Model.objects.create(data_dict, extra='hello', extra2='world)
设置: 我正在研究一个Django应用程序,它允许用户在数据库中创build一个对象,然后返回并按照自己的意愿对其进行编辑。 Django的pipe理站点保留了通过pipe理站点对对象所做更改的历史logging。 问题: 如何将我的应用程序挂接到pipe理站点的更改历史logging,以便我可以查看用户对其“内容”所做更改的历史logging?
我知道Django不支持跨多个数据库的外键 (原来是Django 1.3文档) 但是我正在寻找解决方法。 什么都行不通 我有两个模型,每个在一个单独的数据库。 routers.py: class NewsRouter(object): def db_for_read(self, model, **hints): if model._meta.app_label == 'news_app': return 'news_db' return None def db_for_write(self, model, **hints): if model._meta.app_label == 'news_app': return 'news_db' return None def allow_relation(self, obj1, obj2, **hints): if obj1._meta.app_label == 'news_app' or obj2._meta.app_label == 'news_app': return True return None def allow_syncdb(self, db, model): if […]
当你有一个select选项的模型字段时,你往往会有一些与人类可读名字相关的魔术值。 在Django有一个方便的方法来设置这些字段的人类可读的名称,而不是值? 考虑这个模型: class Thing(models.Model): PRIORITIES = ( (0, 'Low'), (1, 'Normal'), (2, 'High'), ) priority = models.IntegerField(default=0, choices=PRIORITIES) 在某个时候,我们有一个事例,我们想确定它的优先级。 显然你可以这样做, thing.priority = 1 但是这迫使你记住PRIORITIES的价值 – 名称映射。 这不起作用: thing.priority = 'Normal' # Throws ValueError on .save() 目前我有这个愚蠢的解决方法: thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal'] 但这是笨重的。 鉴于这种情况有多普遍,我想知道是否有人有更好的解决scheme。 有什么字段的方法来设置字段的select名称,我完全忽略了?
我如何去在Django模型中指定和使用ENUM?