如何在Django模型中指定和使用ENUM?
假设我有一个模型:
class SomeModel(models.Model):
id = models.AutoField(primary_key=True)
a = models.CharField(max_length=10)
b = models.CharField(max_length=7)
Run Code Online (Sandbox Code Playgroud)
目前我使用默认管理员来创建/编辑此类型的对象.如何b从管理员中删除该字段,以便无法使用值创建每个对象,而是将接收默认值0000000?
编辑:
如何将Django字段的默认设置为每次创建新模型对象时评估的函数?
我想做类似下面的事情,除了在这段代码中,代码被评估一次并将默认设置为创建的每个模型对象的相同日期,而不是每次创建模型对象时评估代码:
from datetime import datetime, timedelta
class MyModel(models.Model):
# default to 1 day from now
my_date = models.DateTimeField(default=datetime.now() + timedelta(days=1))
Run Code Online (Sandbox Code Playgroud)
原版的:
我想为函数参数创建一个默认值,使其成为动态的,并在每次调用函数时调用和设置.我怎样才能做到这一点?例如,
from datetime import datetime
def mydate(date=datetime.now()):
print date
mydate()
mydate() # prints the same thing as the previous call; but I want it to be a newer value
Run Code Online (Sandbox Code Playgroud)
具体来说,我想在Django中这样做,例如,
from datetime import datetime, timedelta
class MyModel(models.Model):
# default to 1 day from now
my_date = models.DateTimeField(default=datetime.now() + timedelta(days=1))
Run Code Online (Sandbox Code Playgroud) django中这个SQL语句的等价物是什么?
SELECT * FROM table_name WHERE string LIKE pattern;
Run Code Online (Sandbox Code Playgroud)
我如何在django中实现这个?我试过了
result = table.objects.filter( pattern in string )
Run Code Online (Sandbox Code Playgroud)
但那没用.我该如何实现?
我想知道是否可以在Django中的models.py文件中定义一个外键,它是对另一个应用程序中的表的引用?
换句话说,我有两个应用程序,称为cf和profiles,在cf/models.py中我有(除其他外):
class Movie(models.Model):
title = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
在profiles/models.py中我希望:
class MovieProperty(models.Model):
movie = models.ForeignKey(Movie)
Run Code Online (Sandbox Code Playgroud)
但我无法让它发挥作用.我试过了:
movie = models.ForeignKey(cf.Movie)
Run Code Online (Sandbox Code Playgroud)
我尝试在models.py的开头导入cf.Movie,但我总是遇到错误,例如:
NameError: name 'User' is not defined
Run Code Online (Sandbox Code Playgroud)
我是否通过尝试以这种方式将两个应用程序绑定在一起来打破规则,或者我的语法错误?
来自我的主管的指示:"我想避免在其中添加任何逻辑models.py.从现在开始,让我们将其用作访问数据库的类,并将所有逻辑保留在使用模型类的外部类中,或者将它们包装起来."
我觉得这是错误的方式.我认为保持模型逻辑只是为了保持文件小是一个坏主意.如果逻辑在模型中是最好的,那么无论文件大小如何,它都应该去.
那么有一个简单的方法来使用包含?在PHP中,我想向主管建议我们只有models.pyinclude()来自其他地方的模型类.从概念上讲,这将允许模型具有我们想要的所有逻辑,但通过增加文件数量来减少文件大小(这会导致较少的修订控制问题,如冲突等).
那么,是否有一种从models.py文件中删除模型类的简单方法,但仍然可以使用所有Django工具的模型?或者,对于"大型"models.py文件的一般问题,是否存在完全不同但优雅的解决方案?任何输入将不胜感激.
我正在尝试根据外键的特定字段的值过滤Django中的表.
例如,我有两个模型 -
class Asset(models.Model):
name = models.TextField(max_length=150)
project = models.ForeignKey('Project')
class Project(models.Model):
name = models.TextField(max_length=150)
Run Code Online (Sandbox Code Playgroud)
我想根据相关项目的名称过滤我的资产清单.
目前我正在执行两个查询:
project_list = Project.objects.filter(name__contains="Foo")
asset_list = Asset.objects.filter(desc__contains=filter,
project__in=project_list).order_by('desc')
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法在主查询中指定这种过滤方式?
设置:
问题:
我最近更新了我的模型,为它添加了一个BooleanField,但是当我这样做时python manage.py syncdb,它不会将新字段添加到模型的数据库中.我怎样才能解决这个问题 ?
Django自动创建一个id字段作为主键.
现在我需要通过此id获取对象.
object = Class.objects.filter()
Run Code Online (Sandbox Code Playgroud)
怎么写这个过滤器?
django ×10
django-models ×10
python ×6
django-admin ×2
default ×1
django-orm ×1
enums ×1
lambda ×1
models ×1
mysql ×1
parameters ×1
sql ×1