出于多种原因^,我想在我的一些Django模型中使用UUID作为主键.如果我这样做,我是否仍然可以使用"contrib.com","django-voting"或"django-tagging"之类的外部应用程序,它们通过ContentType使用通用关系?
以"django-voting"为例,投票模型如下所示:
class Vote(models.Model):
user = models.ForeignKey(User)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
object = generic.GenericForeignKey('content_type', 'object_id')
vote = models.SmallIntegerField(choices=SCORES)
Run Code Online (Sandbox Code Playgroud)
这个应用程序似乎假设被投票的模型的主键是一个整数.
内置的评论应用程序似乎能够处理非整数PK,但是:
class BaseCommentAbstractModel(models.Model):
content_type = models.ForeignKey(ContentType,
verbose_name=_('content type'),
related_name="content_type_set_for_%(class)s")
object_pk = models.TextField(_('object ID'))
content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk")
Run Code Online (Sandbox Code Playgroud)
对于第三方应用程序而言,这种"整数假定PK"问题是否会成为一种常见情况,这会使使用UUID变得痛苦?或者,我可能会误读这种情况吗?
有没有办法在Django中使用UUID作为主键而不会造成太多麻烦?
实用功能应该放在哪里Django?自定义加密/解密数字,发送推文,发送电子邮件,验证对象所有权,自定义输入验证等功能.我在我的应用程序中的许多地方使用的重复和自定义的东西.我现在肯定会打破DRY.
我看到了一些在models.py中定义函数的演示,虽然这在概念上对我来说似乎并不合适.他们应该进入导入我项目的"实用程序"应用程序吗?如果是这样,他们在实用程序应用程序中的位置?那里的models.py文件?
感谢您帮助这个n00b.
更新:让我更具体一点.假设我需要一个函数"light_encrypt(number)",它取param"number",乘以7,加10并返回结果,另一个函数"light_decrypt(encr_number)取param"encr_number",减去10,除以7并返回结果.在我的Django树中我会把它放在哪里?这不是中间件,对吧?正如Felix建议的那样,我是否创建了一个python包并将其导入我需要这些函数的视图中?
我正在尝试在Django中创建一个独特的slug,以便我可以通过这样的URL访问帖子:http: //www.example.com/buy-a-new-bike_Boston-MA-02111_2
相关型号:
class ZipCode(models.Model):
zipcode = models.CharField(max_length=5)
city = models.CharField(max_length=64)
statecode = models.CharField(max_length=32)
class Need(models.Model):
title = models.CharField(max_length=50)
us_zip = models.CharField(max_length=5)
slug = ?????
def get_city():
zip = ZipCode.objects.get(zipcode=self.us_zip)
city = "%s, %s %s" % (zip.city, zip.statecode, zip.zipcode)
return city
Run Code Online (Sandbox Code Playgroud)
ZipCode记录示例:
样本需求记录:
有关如何创建这个独特的slug的任何提示?它的组成是:
注意:上面我想要的slug假定slug"buy-a-new-bike_Boston-MA-02111"已经存在,这就是它附加了"_2"以使其独一无二.
我尝试过django-extensions,但它似乎只需要一个字段或字段来构造独特的slug.我需要传入get_city()函数以及标题和城市之间的"_"连接符.有人解决了这个并愿意分享?
谢谢!
UPDATE
我已经在其UUIDField中使用了django-extensions,所以如果它也可用于其AutoSlugField会很好!
我的谷歌搜索完全离开了我,或者几乎没有任何关于django-socialregistration的文档/教程.太糟糕了,因为它似乎是一个不错的应用程序.通过一些反复试验,我设法让它主要在我的网站上运行.
我的问题,使用django-socialregistration如何申请facebook用户的全名,当前城市和出生日期的许可,并在注册后在Django的UserProfile表(这是我的django-profiles的AUTH_PROFILE_MODULE)中存储它?另外,一旦建立连接,我如何从Django发布到用户的墙上?
目前,当我单击"与Facebook连接"按钮进行Facebook连接时,将创建一个新的Django用户,并且用户使用该Django帐户登录.但是,没有创建UserProfile并且不保存任何facebook个人资料数据.
任何Facebook连接大师都希望帮助Django小马飞到Facebookland?
设置:
- Django 1.2.1
- Python 2.5.2
- django-socialregistration 0.4.2
- django-registration 0.7
- django-profiles 0.2

"亲切的先生,你能帮我找到神奇的脸书吗?"
在我网站上用户生成的帖子下,我有一个类似亚马逊的评级系统:
Was this review helpful to you: Yes | No
Run Code Online (Sandbox Code Playgroud)
如果有投票,我会在上面显示结果,如下所示:
5 of 8 people found this reply helpful.
Run Code Online (Sandbox Code Playgroud)
我想根据这些排名对帖子进行排序.如果您从最有帮助到最不实用的排名,您将如何订购以下帖子?
a) 1/1 = 100% helpful
b) 2/2 = 100% helpful
c) 999/1000 = 99.9% helpful
b) 3/4 = 75% helpful
e) 299/400 = 74.8% helpful
Run Code Online (Sandbox Code Playgroud)
显然,它不能仅对有用的百分比进行排序,不知何故应该考虑总票数.是否有一种标准的方法可以做到这一点?
更新:
使用Charles的公式来计算Agresti-Coull的较低范围并对其进行排序,以上示例将如何排序:
1) 999/1000 (99.9%) = 95% likely to fall in 'helpfulness' range of 99.2% to 100%
2) 299/400 (74.8%) = 95% likely to fall in 'helpfulness' range of 69.6% to 79.3%
3) 3/4 …Run Code Online (Sandbox Code Playgroud) 我正在建立的网站允许用户创建"帖子",并具有类似Twitter的跟随用户的概念.对于给定的用户,我想显示他们关注的用户的所有帖子.
这是我的简化模型:
class User
# a standard django.contrib.auth user model
class UserProfile(models.Model):
# my AUTH_PROFILE_MODULE for django-profiles
user = models.ForeignKey(User, unique=True)
following = models.ManyToManyField('self', symmetrical=False, related_name="followed_by")
class Posts(models.Model):
user = models.ForeignKey(User)
post = models.TextField()
Run Code Online (Sandbox Code Playgroud)
问题:如何从给定用户关注的用户创建所有Post对象的查询集?
我认为我通过在UserProfile上创建"跟随"关系使其变得更加复杂,UserProfile不是与Posts的ForeignKey关系的模型.
UPDATE!这是答案:
Posts.objects.filter(user__userprofile__in=UserProfile.objects.get(user=your_user_object).following.all())
Run Code Online (Sandbox Code Playgroud) 我正在尝试相当于"分组依据",在测验所有者的测验中拉出所有猜测的列表,按用户分组并注释用户所做的猜测次数.
相关型号:
class Quiz(models.Model):
user = models.ForeignKey(User)
...
class Guess(models.Model):
user = models.ForeignKey(User)
quiz = models.ForegnKey(Quiz)
...
Run Code Online (Sandbox Code Playgroud)
这个查询:
guessors = Guess.objects.filter(quiz__user=request.user).values('user').annotate(cnt=Count('user')).order_by('cnt')
Run Code Online (Sandbox Code Playgroud)
返回类似这样的东西,它非常接近我需要的东西:
{'cnt': 5, 'user': 5}
{'cnt': 3, 'user': 4}
{'cnt': 2, 'user': 3}
{'cnt': 1, 'user': 2}
Run Code Online (Sandbox Code Playgroud)
但请注意,当我想要的是一个完整的User对象时,'user'作为int返回.有关如何最有效地获取完整User对象的任何建议?
我正在尝试使用Django的注释功能将相关模型的计数添加到查询集.但是,我不想完全计算相关对象,我只想计算活动对象(即"is_active = True").我无法弄清楚如何过滤掉计数.
(简化)相关模型:
class Post(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=80)
body = models.TextField()
class Comment(models.Model):
user = models.ForeignKey(User)
post = models.ForeignKey(Post)
comment_body = models.CharField(max_length=80)
is_active = models.BooleanField(default=True)
Run Code Online (Sandbox Code Playgroud)
在视图中,我试图注释一个查询集:
queryset=Post.objects.all().annotate(num_comments=Count('comment', distinct=True))
Run Code Online (Sandbox Code Playgroud)
以上计算与帖子相关的所有评论,而我只想计算"is_active"评论.Google和Django文档在这里没有帮助我.有没有人解决过这个问题?
我在Dreamhost上托管我的Django网站Wantbox.com.我想在Wantbox博客上使用Wordpress并在此处找到它:http://wantbox.com/blog/
如何配置Django来解雇"/ blog /"以便Wordpress可以做到这一点?现在,我有一个catch-all url模式,它将未指定的任何内容发送到主页,而这个catch-all正在捕获"/ blog /"并正在执行此操作.
谢谢你的帮助!
更新: 没有必要通过Wordpress访问Django数据,反之亦然.此外,我对基于Django的博客解决方案持开放态度,如果它与我非常熟悉的经过验证的Wordpress一样有效.
我正在创建一个简单的jQuery Mobile 1.3.0单文件,多页文档.加载时,页面上会显示所有页面div.代码有什么问题?
这是HTML:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>Daily Exercise</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="shortcut icon" href="favicon.png"/>
<link rel="apple-touch-icon" href="icon.jpg"/>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
<style>
.content {margin-top:-20px;}
.main {font-weight:bold; font-size:14px; color:#444; font-family:"Trebuchet MS"; margin-left:0px;}
.small {font-weight:normal; font-size:11px; color:#666; font-family:"Courier New";}
.day {display:inline-block; width:85px;}
.exercise {display:inline-block; width:145px;}
.reps {display:inline-block; width:110px; text-align:right;}
.part {display:inline-block; width:40px; text-align:right;}
.test {border:1px red solid;}
</style>
</head>
<body>
<!-- START PAGE -->
<div id="main" data-role="page">
<div data-role="header"> …Run Code Online (Sandbox Code Playgroud) django ×8
annotate ×1
annotations ×1
blogs ×1
comments ×1
content-type ×1
facebook ×1
group-by ×1
jquery ×1
math ×1
mobile ×1
orm ×1
primary-key ×1
python ×1
registration ×1
slug ×1
statistics ×1
structure ×1
user-profile ×1
uuid ×1
voting ×1
wordpress ×1