for key, value in form.cleaned_data.iteritems():Python 3
print key, value
for key, value in form.cleaned_data.items():Reference:
print (key, value)
http://stackoverflow.com/questions/5904969/python-how-to-print-a-dictionarys-key
for key, value in form.cleaned_data.iteritems():Python 3
print key, value
for key, value in form.cleaned_data.items():Reference:
print (key, value)
def get_child_attribute_list(self, element):
return Attribute.objects.filter(Q(element=element), Q(productattribute__product__parent=self)|Q(productattribute__product__root=self))
Site matching query does not exist. Lookup parameters were {'pk': 1}Open Project Shell
python manage.py shell
from django.contrib.sites.models import SiteBest Practise
Site.objects.create(pk=1, domain='example.com', name='example')
python manage.py syncdb --noinput
python manage.py migrate
python mange.py createsuperuser
result_list = sorted(chain(salary_item_list, salary_item_extra_list), key=attrgetter('created'))Deduplicate
unique_results = [rows.next() for (key, rows) in groupby(result_list, key=attrgetter('created')]
Troubleshooting for dj-static (In case static files error)wsgi.py
OSError: [Errno 2] No such file or directory: '/app/PROJECT_NAME/static'
heroku run python manage.py collectstatic --dry-run --noinput
exclusion_list = ['id', 'created']
profile_list = PurchaseProfile.objects.filter(
reference_content_type=ContentType.objects.get_for_model(model), reference_object_id=self.pk)
profile_field_list = profile_list[0]._meta.get_all_field_names()
reference_data = dict([(field.name, getattr(self, field.name)) for field in self._meta.fields if field.name not in exclusion_list and field.name in profile_field_list])
profile_list.update(**reference_data)
response = redirect('salary_payment_list')
response['Location'] += '?type=unpaid'
return response
from django.conf import settings
....
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^static_0/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATICFILES_DIRS[0], 'show_indexes': True}),
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
)
....
TEMPLATE_CONTEXT_PROCESSORS = (template.html
....
'django.core.context_processors.request', # not enabled by default
....
)
{{ request.GET.foo }} {{ request.COOKIES }} {{ request.META }} {{ request.user }}# To access current HttpRequest's attributes & methods
1. cmd
python manage.py runserver 8080
2. web browser
http://local.project-a.com:8080
3. cookies check
1. cmd
python manage.py runserver 8888
2. web browser
http://local.project-b.com:8888
3. cookies check
Sales.objects.filter(sales_person=self)
Sales.objects.select_related().filter(sales_person=self)
Sales.objects.select_related().prefetch_related('booking_set', 'advancepayment_set', 'others_set').filter(sales_person=self)
sales.customer_pk
sales.customer or sales.customer.pk
A. Install into site-packages
pip install django-debug-toolbar
pip install django-extensions
pip install Werkzeug
B. Download and put it all together into a directory
pip install --download="DEBUG" --no-install django-debug-toolbar django-extensions Werkzeug six
Reference: http://www.pip-installer.org/en/latest/cookbook.html
# After download then extract accordingly as following
Projects
+---My_Project1
| +---...
|
+---My_Project2
| +---...
|
+---My_Project3
| +---...
|
+---DEBUG
| +---debug_toolbar
| | +---...
|
| +---django_extensions
| | +---...
|
| +---werkzeug
| | +---...
|
\---six.py
# I'm using method B.
import os
import sys
from settings import MIDDLEWARE_CLASSES, INSTALLED_APPS
DEBUG_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), '../../DEBUG').replace('\\','/')
if os.path.exists(DEBUG_DIR):
sys.path.append(DEBUG_DIR)
MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',)
INSTALLED_APPS += ('debug_toolbar', 'django_extensions',)
INTERNAL_IPS = ('127.0.0.1',)
DEBUG_TOOLBAR_CONFIG = {
'INTERCEPT_REDIRECTS': False,
}
class SalesPerson(User):History - Before Optimized
class Meta:
proxy = True
....
class SalesManager(models.Manager):
def get_sales_person_list(self, user):
if user.is_superuser:
return list(SalesPerson.objects.filter(
pk__in=list(Sales.objects.values_list('sales_person', flat=True)
.order_by("sales_person").distinct())))
class Sales(CommonModel):
....
sales_person = models.ForeignKey(User, related_name="sales_by")
....
objects = SalesManager()
....
return [SalesPerson.objects.get(pk=obj) for obj in self.get_query_set()
.values_list('sales_person', flat=True).order_by("sales_person").distinct()]
INITIAL_CHOICE = ('', '---------')
class ProfileForm(forms.Form):
profile_id = forms.ChoiceField(label=_('Profile'), choices=[INITIAL_CHOICE])
def __init__(self, *args, **kwargs):
super(ProfileForm, self).__init__(*args, **kwargs)
self.fields["profile_id"].choices = [INITIAL_CHOICE]+[(obj.id, "%s [%s]" % (obj.name, obj.identity,)) for obj in Profile.objects.all()]
Sales.objects.extra(select={
'grand_total': "cost_foo_1 + cost_foo_2 + cost_foo_3"
}, where=['id=%s'], params=[self.pk])[0].grand_total
* django: not required field on forms & db
* db: store as ''
* data type: Text/Char fields (Empty string will be stored as '')
text_field = models.CharField(max_length=50, blank=True)
* django: not required field on db only
* db: store as NULL
* data type: Non-string fields (Integers, Booleans and Dates)
date_field = models.DateField(blank=True, null=True)
user = models.ForeignKey(User, blank=True, null=True)
class Payment(CommonModel):
"""Payment info"""
....
class Meta:
abstract = True
class AdvancePayment(Payment):
"""Advance Payment info"""
....
AdvancePayment._meta.get_field('foo').blank = TrueAdvancePayment._meta.get_field('foo').null = True
def backwards(self, orm):
....
db.alter_column('sales_advancepayment', 'foo', self.gf('django.db.models.fields.DateField')(default=''))
change to
db.alter_column('sales_advancepayment', 'foo', self.gf('django.db.models.fields.DateField')(null=False, blank=False))