我正在尝试测试我的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.assertQuerysetEqua
l而不是self.assertListEqual
.不幸的是,这仍然无效,终端显示:
['<Product: Product object>'] != [<Product: Product object>]
assertListEqual
提出:'QuerySet' object has no attribute 'difference'
并且
assertEqual
也不起作用,虽然self.assertSetEqual(response.context['product_list'][0], …
我有多个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上使用多个帐户/多个身份进行推送对于达到目前为止有点帮助
我在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查询,但有几个不同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语句控制的独立查询.任何建议都非常感谢.
我有两个有序的词典,如:
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}
我的一个模型中有以下代码:
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_TZ
是True
.
shortDescription返回一个字符串,该字符串以UTC而不是默认时区提供时间,放入{{ aclass.class_date }}
模板会在正确的区域中显示时间.
是strftime
一直在努力的基础上,本地时间?或者这里还有什么?
我有一个有效的方法,但它似乎非常笨拙,我认为有更好的方法来做到这一点.
我有一个模型,它将我网站上的用户(用于学习目的的推文克隆)与其他用户列表相关联.
现在,当我创建一个新用户时,我希望将该列表初始化为用户作为列表的成员.
我的模特是:
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()两次,但我似乎无法在文档或其他任何地方找到它.
我在路径〜/ .config/pip/pip.conf或路径〜/ pip/pip.conf中找不到文件pip.conf.我的pip版本是8.1.2
我有多个User
类型,我以模型的形式由用户配置文件表示:
我需要在每个请求上访问特定的用户配置文件.为了避免每次我想直接添加select_related
到request.user
对象时执行额外的查询.
我在文档中找不到任何关于它的内容.有谁知道最好的方法吗?
我想为我的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 ×7
python ×3
bitbucket ×1
dictionary ×1
django-forms ×1
django-views ×1
git ×1
linux ×1
one-to-one ×1
pip ×1