小编Dan*_*mes的帖子

我如何测试Django QuerySets是否相等?

我正在尝试测试我的Django视图.此视图将QuerySet传递给模板:

def merchant_home(request, slug):
  merchant = Merchant.objects.get(slug=slug)
  product_list = merchant.products.all()
  return render_to_response('merchant_home.html',
                            {'merchant': merchant,
                            'product_list': product_list},
                            context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

并测试:

  def test(self):
    "Merchant home view should send merchant and merchant products to the template"
    merchant = Merchant.objects.create(name='test merchant')
    product = Product.objects.create(name='test product', price=100.00)
    merchant.products.add(product)

    test_client = Client()
    response = test_client.get('/' + merchant.slug)
    # self.assertListEqual(response.context['product_list'], merchant.products.all())
    self.assertQuerysetEqual(response.context['product_list'], merchant.products.all())
Run Code Online (Sandbox Code Playgroud)

编辑 我用的是self.assertQuerysetEqual而不是self.assertListEqual.不幸的是,这仍然无效,终端显示: ['<Product: Product object>'] != [<Product: Product object>]


assertListEqual提出:'QuerySet' object has no attribute 'difference'并且 assertEqual也不起作用,虽然self.assertSetEqual(response.context['product_list'][0], …

python django django-queryset django-testing

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

如何在同一系统中使用多个ssh密钥维护多个bitbucket帐户

我有多个Git帐户,一个是我个人使用,一个是公司使用.两个帐户来源都需要从我的笔记本电脑激活.这里我生成了两个ssh键,如id_rsa.pub,id_benwork_rsa.pub ,我配置了git 的配置

Host sfsworkdid
 HostName bitbucket.org
 IdentityFile ~/.ssh/id_rsa
Host workdid
 HostName bitbucket.org
 IdentityFile ~/.ssh/id_benwork_rsa
Run Code Online (Sandbox Code Playgroud)

所以这里我的问题是:: -同时推送任何repo git询问第一个ssh_key密码.每次我将git config中的user.name更改为git config user.name"mybitbucketusername".所以请指定我如何在同一系统中使用多个ssh密钥维护多个git帐户

我选择了如何使用多个ssh密钥,多个bitbucket帐户, 但没有使用Blockquote

在github/bitbucket上使用多个帐户/多个身份进行推送对于达到目前为止有点帮助

git bitbucket

24
推荐指数
4
解决办法
1万
查看次数

在Django中使用OneToOneField的ModelForm

我在Django中有两个与OneToOneField(PrinterProfile和PrinterAdress)相关的模型.我试图用PrinterProfileForm做一个表单,但由于某种原因它不会将PrinterAddress字段传递给表单(它不是由模板中的Django"magic"呈现的).

我应该怎么做,以便我的PrinterProfileForm包括PrinterAddress(其相关的OneToOneField)中的字段?

非常感谢

class PrinterProfile(TimeStampedModel):
    user = models.OneToOneField(User)
    phone_number = models.CharField(max_length=120, null=False, blank=False)
    additional_notes = models.TextField()
    delivery = models.BooleanField(default=False)
    pickup = models.BooleanField(default=True)


# The main address of the profile, it will be where are located all the printers.    
class PrinterAddress(TimeStampedModel):
    printer_profile = models.OneToOneField(PrinterProfile)
    formatted_address = models.CharField(max_length=200, null=True)
    latitude = models.DecimalField(max_digits=25, decimal_places=20)  # NEED TO CHECK HERE THE PRECISION NEEDED.
    longitude = models.DecimalField(max_digits=25, decimal_places=20)  # NEED TO CHECK HERE THE PRECISION NEEDED.
    point = models.PointField(srid=4326)

    def __unicode__(self, ):
        return self.user.username

class …
Run Code Online (Sandbox Code Playgroud)

django one-to-one django-forms

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

使用字符串作为Django过滤器查询的参数

我正在尝试做一个django查询,但有几个不同WHERE参数的可能性.所以我想做的事情如下:

querystring = "subcat__id__in=[1,3,5]"
Listing.objects.filter(querystring)
Run Code Online (Sandbox Code Playgroud)

这里列表在我的模型中定义,它包含Many-To-Many字段subcat.但是,这会引发一个ValueError因为过滤器不接受字符串作为其参数.Python中是否有一种方法可以将字符串作为其内容而非字符串进行求值?类似于print语句的东西,它打印字符串的内联值而不是标准输出.

顺便说一下,我不仅仅这样做的原因

querystring = [1,3,5]
Listing.objects.filter(subcat__id__in=querystring)
Run Code Online (Sandbox Code Playgroud)

是我不总是过滤subcat__id,有时它是一个或几个其他参数,我宁愿不必写出一堆由if语句控制的独立查询.任何建议都非常感谢.

django django-queryset

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

如何在python中合并2个有序词典?

我有两个有序的词典,如:

a = collections.OrderedDict()
b = collections.OrderedDict()
Run Code Online (Sandbox Code Playgroud)

他们有东西.我如何合并这两个?我试过了:

mergeDict = dict(a.items() + b.items())
Run Code Online (Sandbox Code Playgroud)

但这样做不再是一个有序的字典了.

我寻找,如果= {1,2,5,6}且b = [0,7,3,9}然后mergeDict = {1,2,5,6,0,7,3,9}

python dictionary

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

在django datetime上使用strftime会在字符串中生成UTC时间

我的一个模型中有以下代码:

def shortDescription(self):
    return self.name + ' ' + self.class_date.strftime("%I:%M")
Run Code Online (Sandbox Code Playgroud)

self.class_date是一个时区意识DateTimeField,self.class_date.is_aware()True,USE_TZTrue.

shortDescription返回一个字符串,该字符串以UTC而不是默认时区提供时间,放入{{ aclass.class_date }}模板会在正确的区域中显示时间.

strftime一直在努力的基础上,本地时间?或者这里还有什么?

django django-templates django-models

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

在Django中实例化具有manytomany字段的模型实例

我有一个有效的方法,但它似乎非常笨拙,我认为有更好的方法来做到这一点.

我有一个模型,它将我网站上的用户(用于学习目的的推文克隆)与其他用户列表相关联.

现在,当我创建一个新用户时,我希望将该列表初始化为用户作为列表的成员.

我的模特是:

class FollowerList(models.Model)
    follower = models.ForeignKey(User,related_name="follower")
    followed = models.ManyToManyField(User,related_name="followed")
Run Code Online (Sandbox Code Playgroud)

在我看来,我现在正在使用的代码是

user = User.objects.get(username=uname)
flst = FollowerList()
flst.follower = user
flst.save()
flst.followed.add(user)
flst.save()
Run Code Online (Sandbox Code Playgroud)

在我看来应该有一个方法来创建它而不调用save()两次,但我似乎无法在文档或其他任何地方找到它.

django django-models manytomanyfield

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

Python在Linux中找不到文件pip.conf

我在路径〜/ .config/pip/pip.conf或路径〜/ pip/pip.conf中找不到文件pip.conf.我的pip版本是8.1.2

linux pip

10
推荐指数
7
解决办法
4万
查看次数

将用户配置文件添加到request.user

我有多个User类型,我以模型的形式由用户配置文件表示:

  • 学生
  • 老师

我需要在每个请求上访问特定的用户配置文件.为了避免每次我想直接添加select_relatedrequest.user对象时执行额外的查询.

我在文档中找不到任何关于它的内容.有谁知道最好的方法吗?

python django

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

与JsonResponse分页

我想为我的JsonResponse添加分页.

我目前正在使用django.http.JsonResponse弹性搜索API生成json.我想添加一个分页功能.我的代码如下:

class ResultQueryView(View):
    def get(self, request):
        resource_meta = request.GET.getlist("resource_meta")
        locations = request.GET.getlist("location")
        page = request.GET.get("page")
        logger.info("Got search query where resource_meta: {} and locations: {}".format(resource_meta, locations))
        results = resource_query(resource_meta, locations)
        resource_ids = [r["_id"] for r in results['hits']['hits']]
        resources = get_enriched_resources(request.user, Resource.objects.filter(internal_id__in=resource_ids))
        serialized = ResourceSerializer(resources, many=True)
        return JsonResponse({"resources": serialized.data})
Run Code Online (Sandbox Code Playgroud)

django django-views

7
推荐指数
2
解决办法
1045
查看次数