簡體   English   中英

AttributeError:類型對象X沒有屬性Y.

[英]AttributeError: type object X has no attribute Y

所以我是Django noob雖然我對Python語法非常熟悉。 我一直收到這個錯誤:

AttributeError at /dashboard/home/
type object 'Member' has no attribute 'dept1'

每次我試着去我的儀表板/家/網址。

我創建了一個自定義用戶模型,如下所示:

from django.db import models    # importing database library from Django   
from django.contrib.auth.models import User

class Member(models.Model):    # table for members' info

    DEPARTMENTS = (
        ('Quiz', 'Quizzing'),
        ('Design', 'Design'),
        ('Elec', 'Electronics'),
        ('Prog', 'Programming'),
    )

    CLASSES = (                 # tuples to store choices for each field
        (9, '9'),               # (actual value to be stored, human-readable value),
        (10, '10'),
        (11, '11'),
        (12, '12'),
    )

    DESIGNATIONS = (
        ('Mem', 'Member'),      
        ('ExecMem', 'Executive Member'),
        ('VicePres', 'Vice President'),
        ('Pres', 'President'),
    )

    user = models.OneToOneField(User)   # to inherit the properties of the base User class in Django, like first_name, last_name, password, username, etc.
    schoolClass = models.IntegerField('Class', choices = CLASSES)
    desig = models.CharField('Designation', max_length = 20, choices = DESIGNATIONS)
    dept1 = models.CharField('Department 1', max_length = 20, choices = DEPARTMENTS)
    dept2 = models.CharField('Department 2', max_length = 20, choices = DEPARTMENTS)
    #proPic = models.ImageField('Profile Picture', upload_to = 'profile_pics')

    def __unicode__(self):
        return self.user.username

這是來自views.py的我的home函數:

@login_required(login_url = '/dashboard/login/')
def home(request):

    noOfPosts = 10

    post_list1 = DepInfo.objects.filter(dept = Member.dept1)[:noOfPosts]
    post_list2 = DepInfo.objects.filter(dept = Member.dept2)[:noOfPosts]

    context = {'post_list1': post_list1, 'post_list2': post_list2}
    return render(request, 'dashboard/home.html', context)

這是我的儀表板/ home.html模板的必需部分:

<h2> Welcome back, {{ Member.first_name }} </h2>
{% if Member.desig == 'Mem' %}
<h2> Member </h2>
{% elif Member.desig == 'ExecMem' %}
<h2> {{ Member.dept1 }} Executive </h2>
{% else %}
<h2> {{ Member.desig }} - MINET </h2>
{% endif %}
<h2> Departments: </h2>
<h3> {{ Member.dept1 }} </h3>
<h3> {{ Member.dept2 }} </h3>

這是我的admin.py:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.admin import User

from dashboard.models import Member, DepInfo

class MemberInline(admin.StackedInline):
    model = Member
    can_delete = False
    verbose_name_plural = 'member'

class UserAdmin(UserAdmin):
    inlines = (MemberInline, )

admin.site.unregister(User)
admin.site.register(User, UserAdmin)
#admin.site.register(Member)
admin.site.register(DepInfo)

在我運行python manage.py shell並在python manage.py shell調用print foo.dept1后,它運行成功,但拒絕在此處正常工作。 你能告訴我我的代碼有什么問題嗎?

您正在嘗試訪問Member dept1屬性,但您應該從Member類的實例獲取該屬性。

所以,你的視圖函數看起來應該更像這樣:

current_member = Member.objects.get(user = request.user)
post_list1 = DepInfo.objects.filter(dept = current_user.dept1)[:noOfPosts]
post_list2 = DepInfo.objects.filter(dept = current_user.dept2)[:noOfPosts]

暫無
暫無

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

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