2017-04-15 57 views
1

我試圖從用戶檢索數據。我有我的模式是這樣的:查詢與用戶fk檢索數據Django 1.11

from django.db import models 

從django.contrib.auth.models導入用戶

這裏創建您的模型。

class informacionFacturacion(models.Model): 
    usuario = models.ForeignKey(User) 
    apellidos = models.CharField(max_length=100, default="editar") 
    nombres = models.CharField(max_length=100, default="editar") 
    telefono = models.CharField(max_length=100, default="editar") 
    email = models.EmailField(default="editar", null=False) 
    direccion_1 = models.CharField(max_length=100, default="editar") 
    direccion_2 = models.CharField(max_length=100, null=True, blank=True) 
    provincia = models.CharField(max_length=100, default="editar") 
    ciudad = models.CharField(max_length=100, default="editar") 
    codigoPostal = models.CharField(max_length=100, default="editar") 
    empresa = models.CharField(max_length=100, default="editar") 

    def __str__(self): 
     return self.usuario 

我要更新用戶信息表:

from .models import informacionFacturacion 

class informacionFacturacionForm(ModelForm): 
    class Meta: 
     model = informacionFacturacion 
     fields = [ 
      "usuario", 
      "apellidos", 
      "nombres", 
      "telefono", 
      "email", 
      "direccion_1", 
      "direccion_2", 
      "provincia", 
      "ciudad", 
      "codigoPostal", 
      "empresa", 
     ] 

在我看來,我有我這樣的查詢

from django.contrib.auth.decorators import login_required 
from .models import informacionFacturacion 
from .forms import informacionFacturacionForm 
@login_required 
def datosPersonales(request): 
    form = informacionFacturacionForm(request.POST or None) 
    if form.is_valid(): 
     instance = form.save(commit=False) 
     instance.save() 
    query = informacionFacturacion.objects.filter(usuario=request.user) 
    context = { 
     "titulo": "Datos personales | Cadenas Giordanino S.R.L" + request.user.username, 
     "body_class": "class= sidebar_main_open sidebar_main_swipe", 
     "form": form, 
     "infoFacturacion": query, 
    } 
    template = "micuenta/datosPersonales.html" 
    return render(request, template, context) 

而這個查詢集是空的。

我需要在用戶配置文件來獲取這些數據

**更新:在後**的完整代碼。

**更新2:**用於在個人資料上顯示用戶數據,即時通訊使用「For循環」。該數據在html輸入的「value =」attr中被檢索。如果用戶沒有數據,則表單爲dosnt show。

這是我想要顯示數據的方式。我從這裏看到的相同形式填充這個表單。 This is the way I wanna show the data. I populated this form from the same form u see here.

下面是當我首次進入我的個人資料沒有數據 Here's when i enter for first time to my profile with no data

非常感謝。

+0

模型中的字段稱爲'user'而不是'user_id'。所以:'.filter(user = request.user)' – allcaps

+0

不工作。 Queryset仍然[]:/ –

+0

我將盡快用我的完整代碼更新問題 –

回答

1

您確定request.user是您將anotherModel鏈接到的用戶嗎?如果您當前未登錄,則request.user將是AnonymousUser的實例。查看更多的文檔:https://docs.djangoproject.com/en/1.11/ref/request-response/#django.http.HttpRequest.user

您可以使用Django的殼來測試機型:

$ python manage.py shell 

然後做一些型號:

from django.contrib.auth.models import User 
from models import AnotherModel 

# Grab a User 
user = User.objects.first() 

# Create a new anotherModel, linking the user 
my_model = AnotherModel(
    user=user, 
    address="whatever" 
) 
my_model.save() 

my_model.user == user 
>>> True 
+0

對我的更新有任何想法嗎? –

+0

如果你的查詢集是空的100%,那麼剩下的唯一解釋就是你實際上並沒有將你的'informacionFacturacion'模型保存爲對用戶的引用。 –

+0

查詢集現在運行良好。我現在的問題是我發佈的imgs。我是否需要爲此創建一個新問題?或者我可以在這裏幫助 –