Как я могу получить данные под указанным c пользователем в шаблон в Django - PullRequest
0 голосов
/ 23 февраля 2020

У меня очень простой Django проект. Я настроил логин и зарегистрировался уже для работы, но моя единственная проблема в том, что в файле models.py выглядит так:

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

# Create your models here.
class ProductRecord(models.Model):
    product_name = models.CharField(max_length=30)
    quantity = models.IntegerField(default=1)

    print_process = models.CharField(max_length=100)
    finish = models.CharField(max_length=50)

    product_image = models.ImageField(upload_to='productImages', blank=True)
    def __str__(self):
        return self.product_name


class UserOrder(models.Model):
    product_name = models.CharField(max_length=30)
    quantity = models.IntegerField(default=0)

    url = models.URLField()
    reorder = models.BooleanField()

    def __str__(self):
        return self.product_name


class UserProfile(models.Model):
    users = models.OneToOneField(User, on_delete=models.CASCADE)

    social_site = models.URLField(blank=True)
    orders = models.ForeignKey(UserOrder, on_delete=models.CASCADE, default=3)

    def __str__(self):
        return self.users.username
















Теперь в админке я могу сделать заказ, а затем в UserProfiles назначить, что заказать аккаунт, но как я могу сделать так, чтобы пользователь, когда он входит в систему, видел его заказы после того, как я назначил их через панель администратора?

1 Ответ

0 голосов
/ 23 февраля 2020

Проверьте, если user.is_authenticated. Предполагая, что профили пользователей создаются автоматически при регистрации, попробуйте что-то вроде:

РЕДАКТИРОВАТЬ (попробуйте, это будет работать): попробуйте это, измените модель UserOrders, чтобы она напоминала эту ...

class UserOrder(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    product_name = models.CharField(max_length=30)
    quantity = models.IntegerField(default=0)
    url = models.URLField()
    reorder = models.BooleanField()

    def __str__(self):
        return self.product_name

и модель вашего профиля будет выглядеть следующим образом:

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    social_site = models.URLField(blank=True)    

    def __str__(self):
        return self.users.username

затем, по вашему мнению:

def your_view(request):
    if request.user.is_authenticated:
        profile = UserProfile.objects.get(user=request.user)
        orders = UserOrders.objects.filter(user=request.user)
    else:
        pass # or do something else
    return render(request, 'your_template.html', locals()) 

Проверьте, есть ли ордера на вашем_шаблоне. html:

{% if orders%}
{%for order in orders%}
{{order.id}} <!-- or interpolate something else like product_name -->
{%endfor %}
{%endif%}
...