当我们在django中添加数据库字段时,我们通常会写models.CharField(max_length=100, null=True, blank=True)
.同样是用ForeignKey
,DecimalField
等等.有什么基本的区别
null=True
只要blank=True
只要null=True
, blank=True
在相对于不同的(CharField
,ForeignKey
,ManyToManyField
,DateTimeField
)字段.使用1/2/3有哪些优点/缺点?
在Django模型QuerySets中,我看到有一个__gt
和__lt
for的比较值,但是有__ne
/ !=
/ <>
(不等于?)
我想用不等于过滤掉:
例:
Model:
bool a;
int x;
Run Code Online (Sandbox Code Playgroud)
我想要
results = Model.objects.exclude(a=true, x!=5)
Run Code Online (Sandbox Code Playgroud)
在!=
不正确的语法.我试过__ne
,<>
.
我最终使用:
results = Model.objects.exclude(a=true, x__lt=5).exclude(a=true, x__gt=5)
Run Code Online (Sandbox Code Playgroud) 有没有办法在Django中定义几个字段是唯一的?
我有一个卷(期刊)表,我不想要同一期刊的一个卷号.
class Volume(models.Model):
id = models.AutoField(primary_key=True)
journal_id = models.ForeignKey(Journals, db_column='jid', null=True, verbose_name = "Journal")
volume_number = models.CharField('Volume Number', max_length=100)
comments = models.TextField('Comments', max_length=4000, blank=True)
Run Code Online (Sandbox Code Playgroud)
我试图unique = True
在字段中添加属性journal_id
,volume_number
但它不起作用.
什么是related_name
对on ManyToManyField
和ForeignKey
字段有用的参数?例如,给出以下代码,有什么影响related_name='maps'
?
class Map(db.Model):
members = models.ManyToManyField(User, related_name='maps',
verbose_name=_('members'))
Run Code Online (Sandbox Code Playgroud) 我想更改模型中特定字段的名称:
class Foo(models.Model):
name = models.CharField()
rel = models.ForeignKey(Bar)
Run Code Online (Sandbox Code Playgroud)
应改为:
class Foo(models.Model):
full_name = models.CharField()
odd_relation = models.ForeignKey(Bar)
Run Code Online (Sandbox Code Playgroud)
使用南方最简单的方法是什么?
--user
pip 有一个选项可以为每个用户安装一个Python包:
pip install --user [python-package-name]
Run Code Online (Sandbox Code Playgroud)
我使用此选项在我没有root访问权限的服务器上安装软件包.我现在需要的是卸载当前用户的已安装软件包.我试图执行这个命令:
pip uninstall --user [python-package-name]
Run Code Online (Sandbox Code Playgroud)
但我得到了:
no such option: --user
Run Code Online (Sandbox Code Playgroud)
pip install --user
除了手动查找和删除软件包之外,如何卸载我安装的软件包?
我发现了这篇文章
其中描述了不支持从用户目录卸载软件包.根据文章,如果它是正确实施然后与
pip uninstall [package-name]
Run Code Online (Sandbox Code Playgroud)
安装的软件包也将在用户目录中搜索.但问题仍然存在.如果在系统范围内和每个用户安装相同的软件包怎么办?如果有人需要定位特定的用户目录怎么办?
我想创建一个包含2个用户链接的对象.例如:
class GameClaim(models.Model):
target = models.ForeignKey(User)
claimer = models.ForeignKey(User)
isAccepted = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)
但是在运行服务器时出现以下错误:
字段'target'的访问者与相关字段'User.gameclaim_set'发生冲突.将related_name参数添加到'target'的定义中.
字段'claimer'的访问者与相关字段'User.gameclaim_set'发生冲突.将related_name参数添加到'claimer'的定义中.
你能解释一下为什么我会收到错误以及如何修复它们吗?
我试图过滤DateTimeField
与日期的比较.我的意思是:
MyObject.objects.filter(datetime_attr=datetime.date(2009,8,22))
Run Code Online (Sandbox Code Playgroud)
我得到一个空的查询集列表作为答案因为(我认为)我不考虑时间,但我想"随时".
Django有这么简单的方法吗?
我有时间在日期时间设置,但事实并非如此00:00
.
假设我们有以下模型:
class Classroom(models.Model):
room_number = [....]
class Teacher(models.Model):
name = [...]
tenure = [...]
classroom = models.ForeignKey(Classroom)
Run Code Online (Sandbox Code Playgroud)
假设不是按照ManyRelatedPrimaryKeyField函数得到这样的结果:
{
"room_number": "42",
"teachers": [
27,
24,
7
]
},
Run Code Online (Sandbox Code Playgroud)
让它返回包含完整相关模型表示的东西,如:
{
"room_number": "42",
"teachers": [
{
'id':'27,
'name':'John',
'tenure':True
},
{
'id':'24,
'name':'Sally',
'tenure':False
},
]
},
Run Code Online (Sandbox Code Playgroud)
这可能吗?如果是这样,怎么样?这是个坏主意吗?
我在尝试理解如何在django中创建动态选择字段时遇到了一些麻烦.我有一个模型设置类似于:
class rider(models.Model):
user = models.ForeignKey(User)
waypoint = models.ManyToManyField(Waypoint)
class Waypoint(models.Model):
lat = models.FloatField()
lng = models.FloatField()
Run Code Online (Sandbox Code Playgroud)
我要做的是创建一个选择字段,其值是与该骑手相关联的航点(可以是登录的人).
目前我在我的表单中覆盖init,如下所示:
class waypointForm(forms.Form):
def __init__(self, *args, **kwargs):
super(joinTripForm, self).__init__(*args, **kwargs)
self.fields['waypoints'] = forms.ChoiceField(choices=[ (o.id, str(o)) for o in Waypoint.objects.all()])
Run Code Online (Sandbox Code Playgroud)
但所有这一切都是列出所有航点,它们与任何特定的骑手没有联系.有任何想法吗?谢谢.
python ×10
django ×9
datetime ×1
django-forms ×1
django-south ×1
filter ×1
many-to-many ×1
pip ×1
python-3.x ×1
virtualenv ×1