小编mit*_*chf的帖子

在Uango模型中使用UUID作为主键(通用关系影响)

出于多种原因^,我想在我的一些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作为主键而不会造成太多麻烦?


^一些原因:隐藏对象计数,防止URL"id爬行",使用多个服务器创建非冲突对象,...

django uuid content-type primary-key django-models

81
推荐指数
5
解决办法
4万
查看次数

实用功能应该放在哪里Django?

实用功能应该放在哪里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包并将其导入我需要这些函数的视图中?

python django structure

41
推荐指数
4
解决办法
2万
查看次数

如何在Django中创建一个独特的slug

我正在尝试在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记录示例:

  • zipcode ="02111"
  • city ="波士顿"
  • statecode ="MA"

样本需求记录:

  • title ="买一辆新自行车"
  • us_zip ="02111"
  • slug ="buy-a-new-bike_Boston-MA-02111_2"(需要)

有关如何创建这个独特的slug的任何提示?它的组成是:

  • Need.title +"_"+ Need.get_city()+"_"+一个可选的递增整数,使其唯一.所有空格都应替换为" - ".

注意:上面我想要的slug假定slug"buy-a-new-bike_Boston-MA-02111"已经存在,这就是它附加了"_2"以使其独一无二.

我尝试过django-extensions,但它似乎只需要一个字段或字段来构造独特的slug.我需要传入get_city()函数以及标题和城市之间的"_"连接符.有人解决了这个并愿意分享?

谢谢!

UPDATE

我已经在其UUIDField中使用了django-extensions,所以如果它也可用于其AutoSlugField会很好!

django django-models slug

19
推荐指数
4
解决办法
2万
查看次数

Facebook Connect:使用django-profiles和django-socialregistration捕获用户数据

我的谷歌搜索完全离开了我,或者几乎没有任何关于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

替代文字
"亲切的先生,你能帮我找到神奇的脸书吗?"

django facebook registration user-profile

7
推荐指数
1
解决办法
2348
查看次数

我该如何订购这些"有用"的分数?

在我网站上用户生成的帖子下,我有一个类似亚马逊的评级系统:

   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)

math statistics comments voting user-generated-content

6
推荐指数
1
解决办法
550
查看次数

获取Django ManyToManyField关系定义的所有对象

我正在建立的网站允许用户创建"帖子",并具有类似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)

django django-models manytomanyfield

5
推荐指数
1
解决办法
3519
查看次数

Django"group by"通过注释:从.value()获取对象与ID

我正在尝试相当于"分组依据",在测验所有者的测验中拉出所有猜测的列表,按用户分组并注释用户所做的猜测次数.

相关型号:

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 orm annotations group-by

5
推荐指数
1
解决办法
1478
查看次数

如何使用annotate()来计算Django中相关模型的子集?

我正在尝试使用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文档在这里没有帮助我.有没有人解决过这个问题?

django annotate django-models

4
推荐指数
2
解决办法
2293
查看次数

如何一起使用Wordpress和Django

我在Dreamhost上托管我的Django网站Wantbox.com.我想在Wantbox博客上使用Wordpress并在此处找到它:http://wantbox.com/blog/

如何配置Django来解雇"/ blog /"以便Wordpress可以做到这一点?现在,我有一个catch-all url模式,它将未指定的任何内容发送到主页,而这个catch-all正在捕获"/ blog /"并正在执行此操作.

谢谢你的帮助!

更新: 没有必要通过Wordpress访问Django数据,反之亦然.此外,我对基于Django的博客解决方案持开放态度,如果它与我非常熟悉的经过验证的Wordpress一样有效.

django wordpress configuration blogs

3
推荐指数
1
解决办法
1403
查看次数

jQuery Mobile在使用多页模板时显示所有页面

我正在创建一个简单的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)

mobile jquery jquery-mobile

2
推荐指数
1
解决办法
1336
查看次数