filter не является редактируемым. Я думаю, что вам нужно получать доступ не к полю, а к объекту модели VariantAttribute. Верно?VariantAttributeInline (атрибут form, если мне не изменяет память). class Characteristic(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='characteristics')
...
class Task(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='tasks')
...
...
import operator
latest_comments_by_category = Project.objects.values_list('id').annotate(
Max('characteristics__comments__created'),
Max('tasks__comments__created'),
)
latest_comments = [
(project_id, max(characteristic_time, task_time))
for project_id, characteristic_time, task_time in latest_comments_by_category
]
projects = [
Projects.objects.get(id=project_id)
for project_id, _ in sorted(latest_comments, key=operator.itemgetter(1), reverse=True)
]User + свою модель Profile, подключённую через OneToOneField. В ней можно собирать все необходимые свойства. Что мешает модератору сайта одновременно быть покупателем футболочек? Собственно ничего.is_staff. Посмотрите django-braces. Вам достаточно использовать class based views и подключать нужные mixins, - и вы забудете об этих проверках: большая их часть будет выполняться в mixins, а не в бизнес-логике предметной области. Вы можете и свои классы для этого дела написать. TypeSerializer нигде не вызывается. Откуда Django знает, что вы хотите его использовать?serializator - ну зачем ужас такой? На русском "сериализатор". На английском "serializer". И никак иначе.class ProjectMiddleware:
def process_request(self, request):
assert hasattr(request, 'user'), (
"The Project middleware "
"requires authentication middleware to be installed. Edit your "
"MIDDLEWARE_CLASSES setting to insert "
"'django.contrib.auth.middleware.AuthenticationMiddleware'. "
"If that doesn't work, ensure your TEMPLATE_CONTEXT_PROCESSORS "
"setting includes 'django.core.context_processors.auth'."
)
if request.user.is_authenticated():
request.project = ...settings.MIDDLEWARE_CLASSES. DateTimeField. grep DateTimeField */migrations/* по всем миграциям и посмотрите, нет ли там где-нибудь неправильных значений datetime (например, в качестве аргумента default).models.py на предмет того же самого.from django.core import validators
price = models.FloatField(..., validators=[validators.MinValueValidator(0.1)])class MyView(...):
form_class = MyForm
def get_form_kwargs(self, ...): # название метода условно, не уверен, что он так называется в generic views и даже что он есть :)
kwargs = super(MyView, self).get_form_kwargs(...)
kwargs.update({'disabled': not self.request.user.has_perm(...)})
return kwargs
class MyForm(...):
def __init__(self, *args, **kwargs):
is_disabled = kwargs.pop('disabled')
super(MyForm, self).__init__(*args, **kwargs)
if is_disabled:
self.fields['foo'].widget.attrs.update({'disabled': 'disabled'}) url(r'', include('blog.urls')),url(r'^$', views.index, name='index'),class ReactorCreateView(PermissionRequiredMixin, CreateView):
permission = 'myapp.create_reactor'
model = AtomicReactor