小编Cry*_*tal的帖子

删除相关对象会删除 ForeignKey 对象

我有以下型号:

class User(models.Model):
      user_question = models.ForeignKey(UserQuestion)

class Question(models.Model):
      text = models.CharField(max_length=255)

class UserQuestion(models.Model):
      answer = models.CharField(max_length=255)
      question = models.ForeignKey(Question)
      user = models.ForeignKey(User, related_name='questions')
Run Code Online (Sandbox Code Playgroud)

当我运行下面的查询时,用户模型也被删除

user.questions.all().delete()
Run Code Online (Sandbox Code Playgroud)

有没有办法在不删除用户的情况下删除问题?

我尝试重复这些问题,但没有用

questions = user.questions.all()
for an in questions:
     answer.delete()
Run Code Online (Sandbox Code Playgroud)

我认为查询集很懒,所以也许我需要在删除之前对其进行评估,所以我打印了它,但这不起作用。

print questions
questions.delete()
Run Code Online (Sandbox Code Playgroud)

我知道使 ForeignKey 可为空将为我提供诸如 clear 和 remove 之类的方法,但我不想这样做,因为我不想要任何孤立的用户问题。

我更新了外键如下

class UserQuestion(models.Model):
  answer = models.CharField(max_length=255)
  user = models.ForeignKey(User, related_name='questions', null=True, on_delete=models.SET_NULL)
Run Code Online (Sandbox Code Playgroud)

我跑了makemigrationsmigrate但是当我运行下面的查询时,问题模型仍然被删除。

user.questions.all().delete()
Run Code Online (Sandbox Code Playgroud)

django python-2.7 django-1.7

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

在Django模板if语句中对条件进行分组

我想在django模板中的if语句中否定一组条件的结果.继承我的代码

{% if not (owner.home_number or owner.work_number or owner.mobile_number) %}
    No contact number available
{% endif %}
Run Code Online (Sandbox Code Playgroud)

我目前收到此错误

TemplateSyntaxError:无法解析余数:'(owner.home_number'来自'(owner.home_number')

django django-templates

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

将自定义过滤器与 Django ModelChoice 过滤器结合使用

我正在尝试使用 django-filters 创建使用过滤器方法

请参阅以下模型的示例:

class Chicken(TimeStampedModel):
    eggs = ForeignKey(Egg)

class Egg(TimeStampedModel):
    hatched = BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

请参阅我当前的过滤器设置示例:

class ChickenFilter(FilterSet):
    eggs__contains = ModelChoiceFilter(name="eggs", method='hatched_eggs', queryset=Eggs.objects.all())

   def hatched_eggs(self, queryset, name, value):
      print "We got eggs"
     return queryset.filter(eggs__hatched=True)
Run Code Online (Sandbox Code Playgroud)

问题是当我点击 url 时,该方法甚至不打印 We got Eggs。它只返回一个空的查询集。

python django django-filters

5
推荐指数
2
解决办法
4919
查看次数

Google 样式文档字符串示例部分未呈现为代码片段

我最近开始向我的项目添加文档,并且我正在尝试遵循 Google 风格指南。我正在使用 Sphinx 生成文档,并使用 Sphinx 扩展拿破仑来弥合 Google 样式指南和 reST 之间的差距。

我在渲染参数和注释时没有问题,但我似乎无法让示例部分渲染代码片段。

class Chicken(object):
      """Animal that lays egg and has feathers

         Note:
             Chickens love to eat feed

         Example:
             chicken.eats(feed)
      """
Run Code Online (Sandbox Code Playgroud)

我还尝试在示例部分使用双冒号。

Example::
Run Code Online (Sandbox Code Playgroud)

google-style-guide python-sphinx sphinx-napoleon

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

如何将partials传递给Dust.js模板

我已经查阅了Dust.js GitHub页面,它说我可以将partials传递给模板,如下所示:

{@partial checkbox_title="JM"}
{>toggle/}
{/partial}
Run Code Online (Sandbox Code Playgroud)

和这样:

{>toggle checkbox_title="Hi JM"/}  
Run Code Online (Sandbox Code Playgroud)

我已经尝试了两种,但它们都没有用,所以我使用了以下内容:

家长:

{< checkbox_title}
Hi JM
{/checkbox_title} 
{>toggle/}
Run Code Online (Sandbox Code Playgroud)

儿童:

{+checkbox_title/}
Run Code Online (Sandbox Code Playgroud)

以上工作,除非我尝试使用以下内容渲染模板:

dust.render("toggle", base.push({checkbox_title:"hhhhhh"}),
    function(err, html) { console.log(html); });
Run Code Online (Sandbox Code Playgroud)

目标:使用dust.render覆盖子模板中的块

dust.js

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