我有這樣一個鏈接和書籤模式:鑑於我看看是否與給定的URL的鏈接已經存在內Django如何比較對象?
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)
現在。 然後將該對象與用戶名傳遞給Bookmarks集合,以查看書籤是否已經存在,並且該用戶名已存在並且鏈接實例已存在。
def bookmark_save_page(request):
if request.method == 'POST':
form = BookmarkSaveForm(request.POST)
if form.is_valid():
# Create or get Link
link, dummy = Link.objects.get_or_create(url=form.cleaned_data['url'])
# Create or get bookmark
bookmark, created = Bookmark.objects.get_or_create(user=request.user, link=link)
# Save bookmark to database
bookmark.save()
return HttpResponseRedirect('/user/%s/' % request.user.username)
這是我不明白的一點。它如何知道如何將鏈接模型中的url字段作爲比較方式?是否因爲我已經像這樣在Link模型中定義了它?
def __unicode__(self):
return self.url
我從.NET來了,有你有定義GetHash()爲類,以此來說明如何實例應該相互作比較。
Python如何知道這一點? 謝謝
你甚至可以在對象之間進行比較?你唯一的比較運算符是'request.method =='POST',它比較2個字符串。 – geoffspear
哪一行比較對象? – bcoughlan
['__cmp__()'](http://docs.python.org/reference/datamodel.html#object.__cmp__),['__eq__()'](http://docs.python.org/reference/ datamodel.html#object .__ eq__),['__gt__()'](http://docs.python.org/reference/datamodel.html#object.__gt__),['__lt__()'](http:// docs.python.org/reference/datamodel.html#object.__lt__)等... –