我在我的项目中做了以下信号:
@receiver(pre_save, sender=group1)
@disable_for_loaddata
def total_closing_group1(sender,instance,*args,**kwargs):
total_group_closing_deb_po = instance.master_group.filter(ledgergroups__Closing_balance__gte=0,balance_nature='Debit').aggregate(the_sum=Coalesce(Sum('ledgergroups__Closing_balance'), Value(0)))['the_sum']
total_group_closing_deb_neg = instance.master_group.filter(ledgergroups__Closing_balance__lt=0,balance_nature='Debit').aggregate(the_sum=Coalesce(Sum('ledgergroups__Closing_balance'), Value(0)))['the_sum']
total_group_closing_po_cre = instance.master_group.filter(ledgergroups__Closing_balance__gte=0,balance_nature='Credit').aggregate(the_sum=Coalesce(Sum('ledgergroups__Closing_balance'), Value(0)))['the_sum']
total_group_closing_neg_cre = instance.master_group.filter(ledgergroups__Closing_balance__lt=0,balance_nature='Credit').aggregate(the_sum=Coalesce(Sum('ledgergroups__Closing_balance'), Value(0)))['the_sum']
total_closing_deb_po = instance.ledgergroups.filter(Closing_balance__gte=0,group1_Name__balance_nature='Debit').aggregate(the_sum=Coalesce(Sum('Closing_balance'), Value(0)))['the_sum']
total_closing_deb_ne = instance.ledgergroups.filter(Closing_balance__lt=0,group1_Name__balance_nature='Debit').aggregate(the_sum=Coalesce(Sum('Closing_balance'), Value(0)))['the_sum']
total_closing_cre_po = instance.ledgergroups.filter(Closing_balance__gte=0,group1_Name__balance_nature='Credit').aggregate(the_sum=Coalesce(Sum('Closing_balance'), Value(0)))['the_sum']
total_closing_cre_ne = instance.ledgergroups.filter(Closing_balance__lt=0,group1_Name__balance_nature='Credit').aggregate(the_sum=Coalesce(Sum('Closing_balance'), Value(0)))['the_sum']
if total_group_closing_deb_po != None and total_group_closing_neg_cre != None and total_closing_deb_po != None and total_closing_cre_ne != None:
instance.positive_closing = total_group_closing_deb_po + abs(total_group_closing_neg_cre) + total_closing_deb_po + abs(total_closing_cre_ne)
if total_group_closing_po_cre != None and total_group_closing_deb_neg != None and total_closing_cre_po != None and total_closing_deb_ne != None:
instance.negative_closing …Run Code Online (Sandbox Code Playgroud) 我的模特:
class GroupBase(models.Model):
"""
Predefined base group name
"""
YesNo = (
('Yes', 'Yes'),
('No', 'No')
)
name = models.CharField(max_length=32, unique=True)
parent = models.CharField(max_length=20)
is_revenue = models.CharField(max_length=3, choices=YesNo, default='No')
affects_trading = models.CharField(max_length=3, choices=YesNo, default='No')
is_debit = models.CharField(max_length=3, choices=YesNo, default='No')
def __str__(self):
return self.name
class LedgerGroup(models.Model):
"""
Ledger Group Master
"""
group_name = models.CharField(max_length=50)
group_base = models.ForeignKey(GroupBase, on_delete=models.DO_NOTHING, related_name='base_group', default=1)
def __str__(self):
return self.group_name
class LedgerMaster(models.Model):
"""
Ledger Master
"""
ledger_name = models.CharField(max_length=80) # unique together with company using meta
ledger_group …Run Code Online (Sandbox Code Playgroud) 我正在使用 django 执行博客应用程序..
每当用户看到特定博客时,无论是注册用户还是非注册用户,我都想跟踪页面查看次数...
并且还想根据查看次数显示查看次数最多的博客..
谁能帮我解决这个..
谢谢
在我的模型中,我想通过覆盖保存方法来格式化图像字段
我在我的模型中做到了这一点
from PIL import Image as Img
from io import StringIO
from django.core.files.uploadedfile import InMemoryUploadedFile
class Blog(models.Model):
Blog_image= models.ImageField(upload_to="...", blank=True)
def save(self, *args, **kwargs):
if self.Blog_image:
image = Img.open(StringIO.StringIO(self.Blog_image.read()))
image.thumbnail((900,300), Img.ANTIALIAS)
output = StringIO.StringIO()
image.save(output, format='JPEG', quality=150)
output.seek(0)
self.Blog_image = InMemoryUploadedFile(output,'ImageField', "%s.jpg" %self.Blog_image.name, 'image/jpeg', output.len, None)
super(Blog, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
但是得到这个属性错误
AttributeError : type object '_io.StringIO' has no attribute 'StringIO'
Run Code Online (Sandbox Code Playgroud)
谁能解释我为什么会收到这个错误???
我的python版本是3.6.4
我的 Django 版本是 2.0.7
这是型号:
class Purchase(models.Model):
date = models.DateField(default=datetime.date.today,blank=False, null=True)
total_purchase = models.DecimalField(max_digits=10,decimal_places=2,blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
我想在特定的日期范围内执行一个月份的"total_purchase"计算,如果一个月内没有购买,则总购买量应该是上个月的购买价值.如果在两个月内购买,那么总购买量会增加那两个......
例:
假设用户给出的日期范围是从4月到11月.
如果4月份购买2800美元,8月份购买5000美元,10月份购买6000美元.
然后输出将是这样的:
April 2800
May 2800
June 2800
July 2800
August 7800 #(2800 + 5000)
September 7800
October 13800 #(7800 + 6000)
November 13800
Run Code Online (Sandbox Code Playgroud)
知道如何在django查询中执行此操作吗?
谢谢
根据雷德尔米兰达先生的回答.我做了以下事情
import calendar
import collections
import dateutil
start_date = datetime.date(2018, 4, 1)
end_date = datetime.date(2019, 3, 31)
results = collections.OrderedDict()
result = Purchase.objects.filter(date__gte=start_date, date__lt=end_date).annotate(real_total = Case(When(Total_Purchase__isnull=True, then=0),default=F('tal_Purchase')))
date_cursor = start_date
while date_cursor < end_date:
month_partial_total = result.filter(date__month=date_cursor.month).agggate(partial_total=Sum('real_total'))['partial_total']
results[date_cursor.month] = month_partial_total …Run Code Online (Sandbox Code Playgroud) Traceback (most recent call last):
File "/Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/serializers/json.py", line 69, in Deserializer
yield from PythonDeserializer(objects, **options)
File "/Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/serializers/python.py", line 91, in Deserializer
Model = _get_model(d["model"])
KeyError: 'model'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "/Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/base.py", line 316, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/base.py", line 353, in execute
output = self.handle(*args, …Run Code Online (Sandbox Code Playgroud) 我收到以下错误:
Traceback:
File "C:\Users\HP\GST\lib\site-packages\django\core\handlers\exception.py"
in inner
35. response = get_response(request)
File "C:\Users\HP\GST\lib\site-packages\django\core\handlers\base.py" in
_get_response
128. response = self.process_exception_by_middleware(e,
request)
File "C:\Users\HP\GST\lib\site-packages\django\core\handlers\base.py" in
_get_response
126. response = wrapped_callback(request, *callback_args,
**callback_kwargs)
File "C:\Users\HP\Desktop\erpcloud\accounts\views.py" in change_password
31. if form.is_valid():
File "C:\Users\HP\GST\lib\site-packages\django\forms\forms.py" in is_valid
179. return self.is_bound and not self.errors
File "C:\Users\HP\GST\lib\site-packages\django\forms\forms.py" in errors
174. self.full_clean()
File "C:\Users\HP\GST\lib\site-packages\django\forms\forms.py" in
full_clean
376. self._clean_fields()
File "C:\Users\HP\GST\lib\site-packages\django\forms\forms.py" in
_clean_fields
397. value = getattr(self, 'clean_%s' % name)()
File "C:\Users\HP\GST\lib\site-packages\django\contrib\auth\forms.py" in
clean_old_password
366. if not self.user.check_password(old_password):
File "C:\Users\HP\GST\lib\site-packages\django\contrib\auth\models.py" in …Run Code Online (Sandbox Code Playgroud) 当用户注册我的应用程序时,当他到达个人资料页面时收到此错误
'ValueError at /profile/:The 'image' attribute has no file associated with
it.'
Run Code Online (Sandbox Code Playgroud)
这是我的个人资料模型:
class Profile(models.Model):
Full_Name = models.CharField(max_length=32,blank=True)
Name = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
E_mail = models.EmailField(max_length=70,blank=True)
Qualification = models.CharField(max_length=32,blank=True)
Permanant_Address = models.TextField(blank=True)
image = models.ImageField(upload_to='user_images', null=True, blank=True)
def __str__(self):
return str(self.Name)
def get_absolute_url(self):
return reverse("userprofile:profiledetail")
@property
def image_url(self):
if self.image and hasattr(self.image, 'url'):
return self.image_url
Run Code Online (Sandbox Code Playgroud)
这是我的表格:
class profileform(forms.ModelForm)"
class Meta:
model = Profile
fields = ('Full_Name','Name', 'E_mail','Qualification','Permanant_Address','image')
Run Code Online (Sandbox Code Playgroud)
这是我的观点:
from django.shortcuts import render
from django.views.generic import DetailView,UpdateView
from django.contrib.auth.mixins import LoginRequiredMixin
from userprofile.models …Run Code Online (Sandbox Code Playgroud) django django-models django-forms django-filter django-template-filters
我正在开发一个会计应用程序...
我有一个名为“组”的模型,我想在特定公司内制作它......
我的意思是不同的公司会有不同的组
所以,我在列表视图中尝试过类似的事情
class group1ListView(LoginRequiredMixin,ListView):
model = group1
def get_queryset(self, pk):
company_details = get_object_or_404(company, pk=pk)
return self.model.objects.all().filter(Q(User=self.request.user) & Q(Company=company_details.id))
Run Code Online (Sandbox Code Playgroud)
用户和公司字段通过我的 group1 模型中的外键相关。
但出现此错误:
TypeError get_queryset() 缺少 1 个必需的位置参数:'pk'
谁能告诉我我在这方面做错了什么?
谢谢
我有一个decorater,如果id = 1的产品未激活,它可以防止用户访问url。我想创建与此类似的mixin。
这是我的设计师:
from django.core.exceptions import PermissionDenied
from ecommerce_integration.models import Product
def product_1_activation(function):
def wrap(request, *args, **kwargs):
products = Product.objects.filter(pk=1, activate=True)
if products:
return function(request, *args, **kwargs)
else:
raise PermissionDenied
wrap.__doc__ = function.__doc__
wrap.__name__ = function.__name__
return wrap
Run Code Online (Sandbox Code Playgroud)
任何想法如何创建类似于上述decorater的自定义混合。
实际上,我想为基于类的视图创建mixin。
有人可以帮我吗?
谢谢