【发布时间】:2015-02-09 14:29:55
【问题描述】:
我正在尝试通过 Coding for Entrepreneur 学习 Django。问题出在教程中,当导师在 admin.py 中添加模型时,会显示字段的值。当我这样做时,它只显示“某物”。
models.py
from django.db import models
class Join(models.Model):
email = models.EmailField()
ref_id = models.CharField(max_length=120, default='ABC', unique=True)
ip_address = models.CharField(max_length=120, default='ABC')
timestamp = models.DateTimeField(auto_now_add = True, auto_now = False)
updated = models.DateTimeField(auto_now_add = False, auto_now = True)
def __unicode__(self):
return "%s" %(self.email)
class Meta:
unique_together = ("email", "ref_id",)
class JoinFriends(models.Model):
email = models.OneToOneField(Join, related_name="Sharer")
friends = models.ManyToManyField(Join, related_name="Friend", null=True, blank=True)
emailall = models.ForeignKey(Join, related_name="emailall")
def __unicode__(self):
print(self.friends.all())
print(self.emailall)
print(self.email)
return (self.friends.all()[0].email)
admin.py
from django.contrib import admin
from .models import Join, JoinFriends
class JoinAdmin(admin.ModelAdmin):
list_display = ['__unicode__', 'timestamp', 'updated']
class Meta:
model = Join
admin.site.register(Join, JoinAdmin)
admin.site.register(JoinFriends)
应该如何 我这样做的时候是怎么回事 我该如何解决这个问题。
感谢您的帮助
当点击添加加入好友时,应该会出现上面显示的页面。当我在 admin.py 中添加以下代码时,它在下一页中完美显示
class FriendAdmin(admin.ModelAdmin):
list_display = ['__unicode__']
admin.site.register(JoinFriends, FriendAdmin)
但是,当我点击添加加入好友时,页面如上图1所示。
使用 def __str___(self) 函数时:
【问题讨论】:
-
你好,如你所见。主页正在工作。但是我点击添加时的页面没有显示确切的值。相反,它显示了 Join 对象
-
unicode函数中未闭合的双引号是错字吗?
-
你用的是python 2还是python 3?
-
如果使用python 3,则需要定义
def __str__(self):而不是__unicode__ -
它正在返回一个字符串。即使我编辑 models.py 并删除 JoinFriends 类并添加friend = models.ForeignKey("self", related_name="referral", null=True, blank=True)