2013-08-18 3 views
0

у меня есть следующее:Установка задание поля даты в поле внешнего ключа в Django

class FacturasMonthArchiveView(MonthArchiveView): 
    queryset = Factura.objects.all() 
    date_field = "pedido__fecha_pedido" 
    make_object_list = True 
    allow_future = True 
    template_name = 'ventas/facturas.html' 
    context_object_name = 'facturas_list' 

У меня есть поле pedido в таблице Factura, что ссылки на порядок с много информации, один из что поля это fecha_pedido, что я хочу использовать его для общего вида MonthArchiveView, поставить его на pedido__fecha_pedido не работает, как вы можете его видеть, поэтому я не знаю, как я могу это сделать, любые идеи?

С уважением!

Edit с двумя моделями:

Pedido

class Pedido(models.Model): 
    referencia = models.CharField(max_length=255) 
    cliente = models.ForeignKey(Cliente,related_name="cliente",on_delete=models.PROTECT) 
    fecha_pedido = models.DateField() 
    fecha_entrega = models.DateField() 
    agencia_envio = models.ForeignKey(Envio, related_name="entrega",blank=True,null=True) 
    producto = models.ManyToManyField(Producto, through='Detalle_Pedido') 
    pendiente_de_factura = models.BooleanField(default=False) 

    def __unicode__(self): 
      return self.referencia 

    def save(self, *args, **kwargs): 
     super(Pedido, self).save(*args,**kwargs) 

    class Meta: 
     ordering = ["referencia","fecha_pedido"] 

Factura

class Factura(models.Model): 
    iva = models.FloatField(default=0.0) 
    pedido = models.ForeignKey(Pedido, related_name="pedido_factura") 

    def __unicode__(self): 
     return "Factura -> ",self.pedido.referencia 

    def save(self, *args, **kwargs): 
     super(Detalle_Pedido, self).save(*args,**kwargs) 

    class Meta: 
     ordering = ["pedido"] 

Edit: Traceback ошибка

Environment: 


    Request Method: GET 
    Request URL: http://127.0.0.1:8000/ventas/facturas/2013/8/ 

    Django Version: 1.5.1 
    Python Version: 2.7.3 
    Installed Applications: 
    ('django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.sites', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'widget_tweaks', 
    'dajaxice', 
    'dajax', 
    'suit', 
    'django.contrib.admin', 
    'south', 
    'ventas', 
    'chartit') 
    Installed Middleware: 
    ('django.middleware.common.CommonMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware') 


    Traceback: 
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
     115.       response = callback(request, *callback_args, **callback_kwargs) 
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view 
     25.     return view_func(request, *args, **kwargs) 
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/django/views/generic/base.py" in view 
     68.    return self.dispatch(request, *args, **kwargs) 
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch 
     86.   return handler(request, *args, **kwargs) 
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/django/views/generic/dates.py" in get 
     333.   self.date_list, self.object_list, extra_context = self.get_dated_items() 
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/django/views/generic/dates.py" in get_dated_items 
     509.    'previous_month': self.get_previous_month(date), 
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/django/views/generic/dates.py" in get_previous_month 
     111.   return _get_next_prev(self, date, is_previous=True, period='month') 
    File "/Users/Tone/blog-env/lib/python2.7/site-packages/django/views/generic/dates.py" in _get_next_prev 
     761.    result = getattr(qs[0], date_field) 

    Exception Type: AttributeError at /ventas/facturas/2013/8/ 
    Exception Value: 'Factura' object has no attribute 'pedido__fecha_pedido' 
+0

Что вы подразумеваете под «не работает»? есть ли какая-либо ошибка, список пуст или что? Также опубликуйте оба определения модели. – mariodev

+0

В основном с помощью 'pedido__fecha_pedido'I'm пытается сделать ссылку на это поле для использования как date_field, но это не работает, вот и все, я редактирую с двумя моделями, чтобы уточнить это. – Enot

ответ

0

Причина заключается в том, что по умолчанию метод _make_date_lookup_arg использует

model._meta.get_field(self.get_date_field()) 

для проверки поля модели, поэтому вы, вероятно, получите «FieldDoesNotExist».

Вы можете переопределить «_make_date_lookup_arg» метод, так что вид класса выглядит следующим образом:

class FacturasMonthArchiveView(MonthArchiveView): 
    queryset = Factura.objects.all() 
    date_field = "pedido__fecha_pedido" 
    make_object_list = True 
    allow_future = True 
    template_name = 'ventas/facturas.html' 
    context_object_name = 'facturas_list' 

    def _make_date_lookup_arg(self, value): 
     return value 

хотя я не знаю, как это будет влиять на остальную часть кода.

+0

Извините за мой поздний ответ, я несколько дней отсутствовал, для метода '_make_date_lookup_arg' для значения. Мне нужно вернуть поле, помещенное в' date_field' раньше? 'pedido__fecha_pedido' в этом случае? Я не знаю, как это сделать, я пытался с некоторыми комбинациями и всегда говорил, что нет поля 'pedido__fecha_pedido'or' fecha_pedido' – Enot

+0

@ Не обновляю свой ответ – mariodev

+0

Вот что я сказал, мне понравилось, что вы обновили он и бросает мне ошибку атрибута: '' Factura 'объект не имеет атрибута' pedido__fecha_pedido'' – Enot

 Смежные вопросы

  • Нет связанных вопросов^_^