我的图书模型如下:
from django.db import models
from django.db.models.signals import pre_save
from django.utils.text import slugify
from django.conf import settings
class Book(models.Model):
added_by = models.ForeignKey(
settings.AUTH_USER_MODEL,null=True,blank=True,related_name='book_add',on_delete=models.CASCADE),last_edited_by = models.ForeignKey(
settings.AUTH_USER_MODEL,related_name='book_edit',on_delete=models.CASCADE)
title = models.CharField(max_length=120)
description = models.TextField(null=True,blank=True)
slug = models.SlugField()
updated = models.DateTimeField(auto_now_add=False,auto_now=True)
timestamp = models.DateTimeField(auto_now_add=True,auto_now=False)
@property
def user_id(self):
return self.added_by.id
def __str__(self):
return self.title
def pre_save_book(sender,instance,*args,**kwargs):
slug = slugify(instance.title)
instance.slug = slug
pre_save.connect(pre_save_book,sender=Book)
现在在我的admin.py文件中,我正在尝试执行此操作:
from django.contrib import admin
from .models import Book
from .forms import BookForm
class BookAdmin(admin.ModelAdmin):
fields = [
'title','slug','added_by'
]
read_only_fields = [
'updated'
'timestamp','added_by','last_edited_by'
]
admin.site.register(Book,BookAdmin)
我收到一条错误消息,提示无法识别出add_by字段,但这应该是正确的,因为我已将其定义为原始用户模型上的外键。
所以我试图去控制台尝试一下:
(Django-concepts) ~/Desktop/Studies/Codes/Django-concepts/django_cls_views:$ python manage.py shell
Python 3.7.3 (default,Mar 27 2019,09:23:15)
[Clang 10.0.1 (clang-1001.0.46.3)] on darwin
Type "help","copyright","credits" or "license" for more information.
(InteractiveConsole)
>>> from demo.models import Book
>>> for obj in Book.objects.all():
... print(obj.added_by[0].username)
...
Traceback (most recent call last):
File "<console>",line 2,in <module>
AttributeError: 'ForeignKey' object has no attribute 'username'
>>>
我绝对不知道我在做什么错。有人可以对此提供建议。如何访问用户详细信息,以便可以在视图中打印它们。