簡體   English   中英

如何在用戶配置文件中顯示用戶輸入到Django模型中的信息

[英]how to display information entered by a user into a django model in the User profile

我是django的新手,目前正在從事一個項目。 這是一個人們可以在這里尋找房屋出租的網站。 用戶將能夠創建帳戶,搜索要出租的房屋並創建有關他們要出租的房屋的列表。

我創建了一個模型來保存有關用戶要出租的房屋的所有信息。 我需要過濾此信息,並在其個人資料上顯示每個用戶的列表。 我已經在網上搜索,但還沒有解決方案。

真的需要幫助。

models.py

from django.db import models
from django.contrib.auth.models import User
class Myhouses(models.Model):
    Available = 'A'
    Not_Available = 'NA'
    Availability = (
        (Available, 'Available'),
        (Not_Available, 'Not_Available'),
    )
    name_of_accomodation = models.CharField(max_length=200)
    type_of_room = models.CharField(max_length=200)
    house_rent = models.IntegerField()
    availability = models.CharField(max_length=2, choices=Availability, default=Available,)
    location = models.CharField(max_length=200)
    nearest_institution = models.CharField(max_length=200)
    description = models.TextField(blank=True)
    image = models.ImageField(upload_to='profile_image')
    author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, related_name='author')

    def __str__(self):
        return self.name_of_accomodation

view.py

class ListingByUser(LoginRequiredMixin, generic.ListView): 
    model = Myhouses
    template_name ='houses/ListingByUser.html'
    paginate_by = 10
    def get_queryset(self):
        return Myhouses.objects.filter(author=self.request.user)

urls.py

from django.conf.urls import url, include
from . import views
from django.contrib.auth.models import User


urlpatterns = [
    url(r'^addlisting/$', views.addlisting, name='addlisting'),
    url(r'^mylisting/', views.ListingByUser.as_view(), name='ListingByUser')
]

模板

<ul>
{% for houses in myhouses_list %}
    <li>{{ houses.name_of_accomodation }}</li>

{%endfor %}
</ul>

快速瀏覽代碼, ListingByUser視圖上有什么讓我感到ListingByUser :您重寫get方法僅是為了設置一些通常定義為類屬性的屬性。 這也可能阻止您的視圖將模型實際從數據庫中取出(通過調用get_queryset方法)並呈現適當的響應。

編輯

我發現將模板鏈接到ListingByUser視圖正在呈現的響應時也存在問題。 據我所知,Django視圖並沒有使用變量template_name來獲取響應的模板。 但是它確實調用方法get_template_names ,該方法返回以字符串形式給出的模板名稱的列表。

嘗試以這種方式修改它:

views.py

class ListingByUser(LoginRequiredMixin, generic.ListView):
    model = Myhouses
    template_name ='myhouses/listing_by_user.html'
    paginate_by = 10

    def get_queryset(self):
        return Myhouses.objects.filter(author=self.request.user)

    def get_template_names(self):
        return [self.template_name]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM