我正在使用 django 1.10 编写博客应用程序
这是我的对象模型的一个片段:
model.py
class Attachment(models.Model):
title = models.CharField(max_length=50)
image = models.ImageField(upload_to='attachments')
class FileAttachments(models.Model):
title = models.CharField(max_length=50)
attachments = models.ManyToManyField(Attachment)
class Post(models.Model):
title = models.CharField(max_length=200)
text = models.CharField(max_length=2000)
file_attachments = models.ForeignKey(FileAttachments, blank=True, null=True)
slug = models.SlugField(max_length=40, default='', unique=True)
author = models.ForeignKey(User, default=1)
pub_date = models.DateTimeField(blank=True, null=True)
def get_absolute_url(self):
return "/blog/%s/%s/%s/%s/" % (self.pub_date.year, self.pub_date.month, self.pub_date.day, self.slug)
def __unicode__(self):
return self.title
class Meta:
verbose_name = "Blog Post"
verbose_name_plural = "Blog Posts"
ordering = ["-create_date"]
permissions = (
( "create", "Create Post" ),
( "modify", "Modify Post" ),
( "delete", "Delete Post" ),
)
(简体)admin.py:
class PostAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
exclude = ('author',)
def save_model(self, request, obj, form, change):
obj.author = request.user
obj.save()
# Register your models here.
admin.site.register(Post, PostAdmin)
当我尝试通过管理页面访问 Post 对象时 - 在列表视图中,我只看到"Post 对象" - 而我想查看帖子的标题(可能还有 Post 对象的其他一些属性) - 如何修改管理视图来实现这一点?
对于您的第一个问题 - 您需要在PostAdmin
中定义list_display,如下所示:
class PostAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
exclude = ('author',)
list_display = ('title', 'pub_date')
至于你的第二个问题 - 请坚持"一个帖子,一个问题"规则;提示 -ForeignKey
意味着只有一个FileAttachment可以与您的帖子相关。
-
更改 Post 类中
__str__
的__unicode__
并打印您想要的任何内容。 例如:return "Blog %s published on %s" %(self.title, self.pub_date)
. -
您的 Post 模型仅包含一个通过外键的附件。 这样就不可能上传多个文件。 换句话说,您必须更改模型,例如在与帖子相关的文件附件中包含密钥,并从帖子模型中删除该密钥。
希望这有帮助。