使用用户fk Django 1.11查询检索数据

时间:2017-04-15 22:36:24

标签: django django-models

我正在尝试从用户检索数据。我有这样的模型:

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)

此QuerySet为空。

我需要在用户个人资料中检索此数据

**更新:**帖子上的完整代码。

**更新2:**为了在配置文件上显示用户数据,我使用“For循环”。此数据在html输入的“value =”attr中检索。如果用户没有数据,则表单dosnt显示。

这是我想要显示数据的方式。我用你在这里看到的相同形式填写了这个表格。 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

非常感谢。

1 个答案:

答案 0 :(得分:1)

您确定request.user是您与anotherModel相关联的用户吗?如果您当前未登录,则request.user将成为AnonymousUser的实例。请参阅文档中的更多内容:https://docs.djangoproject.com/en/1.11/ref/request-response/#django.http.HttpRequest.user

您可以使用Django Shell测试模型:

$ 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