Django如何比较对象?

2024-05-16 00:03:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个链接和这样的书签模型:

class Link(models.Model):
    url = models.URLField(unique=True)        
    def __unicode__(self):
        return self.url

class Bookmark(models.Model):
    title=models.CharField(max_length=200)
    user=models.ForeignKey(User)
    link=models.ForeignKey(Link)        
    def __unicode__(self):
        return u'%s, %s' % (self.user.username, self.link.url)

现在在一个视图中,我看到一个带有给定url的链接是否已经存在。 然后将此对象与username to Bookmarks集合一起传递,以查看是否已经存在具有此用户名的书签,并且链接实例已经存在。在

^{pr2}$

这是我不明白的地方。它如何知道如何将链接模型中的url字段作为一种比较方式?是因为我在链接模型中这样定义它吗?在

def __unicode__(self):
        return self.url

我来自.NET,在那里你必须为类定义GetHash(),作为一种指定实例如何相互比较的方法。在

Python是怎么知道这一点的? 谢谢


Tags: 模型selfurlmodelreturn链接modelsdef
1条回答
网友
1楼 · 发布于 2024-05-16 00:03:31

我想你是在问“Django如何在过滤时比较实例”,而不是“python如何比较对象”。在

用下面的代码行

bookmark, created = Bookmark.objects.get_or_create(user=request.user, link=link)

Django正在筛选链接对象的主键。__unicode__方法无关紧要。在

有关更多信息,请参见comparing objectsqueries over related objects的Django文档。在

相关问题 更多 >