【问题标题】:How to connect an object automatically with user who is creating it and display those objects only which a specific user has created in django?如何自动将对象与创建它的用户连接并仅显示特定用户在 django 中创建的那些对象?
【发布时间】:2019-04-27 11:18:58
【问题描述】:

我正在 django 中制作房地产应用程序,我遇到的问题是用户可以登录他的帐户并开始创建他的属性,然后他可以查看这些属性,但我得到的是每个用户的属性在页面上,而它应该只是特定用户创建的属性。

这里是属性的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,以便我以后可以遇到这些问题。如果你知道,请在 cmets 中写下来。

【问题讨论】:

  • 如果用户已登录,则用户对象将存储在request.user 中,因此要获取用户的property,请在request.user.property_set.all() 中使用request.user.property_set.all() views
  • 你能做出那个观点吗?
  • 查看下面@Aurélien 的答案,它提供了两种实现视图的方式

标签: django django-models django-views


【解决方案1】:

您有两个选项来获取用户的属性。

使用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})

【讨论】:

  • 嗨@UbaidParvaiz,如果这个答案已经解决了你的问题,请考虑点击复选标记接受它。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
  • 是的,我有另一个问题
猜你喜欢
  • 2012-05-18
  • 2013-05-29
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 2015-03-31
相关资源
最近更新 更多