首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-教程模型第5章

Django-教程模型第5章
EN

Stack Overflow用户
提问于 2013-01-26 15:05:50
回答 2查看 440关注 0票数 0

我目前正在通过Django-book教程学习Django,我遇到了一个错误。在第5章,我应该在python解释器中输入这段代码。

代码语言:javascript
复制
    >>> p1 = Publisher.objects.create(name='Apress', 
    ... address='2855 Telegraph Avenue', 
    ... city='Berkeley', state_province='CA', country='U.S.A.', 
    ... website='http://www.apress.com/') 
    >>> p2 = Publisher.objects.create(name="O'Reilly", 
    ... address='10 Fawcett St.', city='Cambridge', 
    ... state_province='MA', country='U.S.A.', 
    ... website='http://www.oreilly.com/') 
    >>> publisher_list = Publisher.objects.all() 
    >>> publisher_list 

根据本教程,我应该得到以下输出

代码语言:javascript
复制
    [<Publisher: Publisher object>, <Publisher: Publisher object>] 

然而,我得到了相同的输出,但是有4个对象!

代码语言:javascript
复制
    [<Publisher: Publisher object>, <Publisher: Publisher object>, <Publisher: Publisher object>, <Publisher: Publisher object>] 

另外,我应该将我的models.py从django.db导入模型更改为这个(添加了unicode函数)

代码语言:javascript
复制
    class Publisher(models.Model): 
    name = models.CharField(max_length=30) 
    address = models.CharField(max_length=50) 
    city = models.CharField(max_length=60) 
    state_province = models.CharField(max_length=30) 
    country = models.CharField(max_length=50) 
    website = models.URLField() 

    def __unicode__(self): 
            return self.name 

    class Author(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=40) 
    email = models.EmailField() 

    def __unicode__(self): 
            return u'%s %s' % (self.first_name, self.last_name) 

    class Book(models.Model): 
    title = models.CharField(max_length=100) 
    authors = models.ManyToManyField(Author) 
    publisher = models.ForeignKey(Publisher) 
    publication_date = models.DateField() 

    def __unicode__(self): 
            return self.title 

以便显示对象。以下是根据本教程的输出

代码语言:javascript
复制
    >>> from books.models import Publisher 
    >>> publisher_list = Publisher.objects.all() 
    >>> publisher_list 
    [<Publisher: Apress>, <Publisher: O'Reilly>] 

但我还是得到了

代码语言:javascript
复制
    [<Publisher: Publisher object>, <Publisher: Publisher object>, <Publisher: Publisher object>, <Publisher: Publisher object>] 

不确定为什么我得到了更多的对象,为什么我不能查看unicode的输出...

谢谢你的帮助!

**http://django-book.readthedocs.org/en/latest/chapter05.html是指向特定章节的链接!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-26 15:16:15

尝试此示例:

models.py

代码语言:javascript
复制
class Debt(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=50,
        help_text="Name to identify your debt.")
    due_day = models.PositiveSmallIntegerField(
        help_text="Day of the month payment is due.")

    def __unicode__(self):
        return "{0}".format(self.user)

views.py

代码语言:javascript
复制
def debt(request):

return render(request, 'debt.html', {
    'debts': Debt.objects.filter(),
}) 

debt.html

代码语言:javascript
复制
 {% for debt in debts %}
     {{debt.user}} - {{debt.name}} <br/>
 {% endfor %}  
票数 2
EN

Stack Overflow用户

发布于 2013-01-26 15:25:29

这是因为您已经运行了两次代码。这些值已保存在数据库中。当您再次运行它时,又保存了两个值,它们是重复的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14534716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档