Как автоматически связать объект с пользователем, который его создает, и отобразить только те объекты, которые конкретный пользователь создал в django? - PullRequest
0 голосов
/ 27 апреля 2019

Я делаю приложение для недвижимости в django, и проблема, которую я получаю, заключается в том, что пользователь может войти в свою учетную запись и начать создавать свои свойства, а затем он может просматривать эти свойства, но я получаю свойства каждого пользователяна странице, в то время как это должно быть только свойство, которое создал конкретный пользователь.

Здесь s свойством models.py, и я использую пользовательскую модель django

from django.core.urlresolvers import reverse
from django.contrib.auth.models import User

class Property(models.Model):
title = models.CharField(max_length = 210,default = 'None')

STATUS_CHOICES = (
('R','Rent'),
('S','Sale'),
    )

status = models.CharField(max_length = 210,choices =     STATUS_CHOICES,default = 'None')

price = models.IntegerField(default = 'None')

area = models.CharField(max_length = 210,default = 'None')

ROOM_CHOICES = (
('1','1'),
('2','2'),
('3','3'),
('4','4'),
('MORE','More'),
    )

rooms = models.CharField(max_length = 210,choices = ROOM_CHOICES,default = 'None')
BATHROOM_CHOICES = (
('1','1'),
('2','2'),
('3','3'),
('4','4'),
    )
bathroom = models.CharField(max_length = 210,choices = BATHROOM_CHOICES,default = 'None')
address = models.CharField(max_length = 210,default = 'None')
state = models.CharField(max_length = 210,default = 'None')
code = models.CharField(max_length = 210,default = 'None')
images = models.ImageField(upload_to = 'media',default = 'None')
info = models.TextField(max_length = 1000,default = 'None')
parking = models.BooleanField(default = False)
air = models.BooleanField(default = False)
swimming = models.BooleanField(default = False)
laundry = models.BooleanField(default = False)
dealer_name = models.CharField(max_length = 210,default = 'None')
dealer_email = models.EmailField(max_length = 210,default = 'None')
dealer_number = models.CharField(max_length = 210,default = 'Not mentioned')
user = models.ForeignKey(User,related_name = 'user')



def get_absolute_url(self,*args,**kwargs):
    return reverse('profile_details:property', kwargs={'pk':self.pk,})

Также мне нужна помощьс каким-то курсом, который может помочь мне пройти через django полностью и ясно, чтобы я мог столкнуться с этими проблемами в будущем. Если вы знаете что-либо, пожалуйста, запишите в комментариях.

1 Ответ

0 голосов
/ 27 апреля 2019

У вас есть два варианта получения свойств пользователя.

Использование метода filter():

# View to display the user properties
def properties_page(request):
    properties = Property.objects.filter(user=request.user)
    return render(request, 'app/user_properties.html', {'properties': properties})

Использование _set.all()

# View to display the user properties
def properties_page(request):
    properties = request.user.property_set.all()
    return render(request, 'app/user_properties.html', {'properties': properties})
...