Django 检查数据库表中是否存在用户

Django 检查数据库表中是否存在用户,django,django-models,django-forms,django-views,django-templates,Django,Django Models,Django Forms,Django Views,Django Templates,我想写一个方法,如果要检查用户是否已经添加了一个对象到他们的书签然而,我正在挣扎如何写它,以便我可以把它传递到我的模板 因此,我有两种类型的模型,用于为不同的对象添加书签: class BookmarkBase(models.Model): class Meta: abstract = True user = models.ForeignKey(Profile,on_delete=models.CASCADE, verbose_name=&quo

我想写一个方法,如果要检查用户是否已经添加了一个对象到他们的书签然而,我正在挣扎如何写它,以便我可以把它传递到我的模板

因此,我有两种类型的模型,用于为不同的对象添加书签:

class BookmarkBase(models.Model):
    class Meta:
        abstract = True
        
    user = models.ForeignKey(Profile,on_delete=models.CASCADE, verbose_name="User")

    def __str__(self):
        return self.user.username

class BookmarkPost(BookmarkBase):
    class Meta:
        db_table  = "bookmark_post"
    
    date = models.DateTimeField(auto_now_add=True)
    obj = models.ForeignKey('home.Post',on_delete=models.CASCADE, verbose_name="Post")

class BookmarkBlog(BookmarkBase):
    class Meta:
        db_table  = "bookmark_blog"
        
    date = models.DateTimeField(auto_now_add=True)
    obj = models.ForeignKey('home.Blog',on_delete=models.CASCADE, verbose_name="Blog")
负责处理向书签添加/删除对象的my视图和URL包括:

@login_required
def add_bookmark(request, id, obj_type):
    data=dict()
    if request.method == 'POST':
        if obj_type=='post':
            model = BookmarkPost
        elif obj_type=='blog':
            model = BookmarkBlog
        elif obj_type=='buzz':
            model = BookmarkBuzz
        user = auth.get_user(request)
        bookmark, created = model.objects.get_or_create(user=user, obj_id=id).remove()
        if not created:
            bookmark.delete()
        context = {'bookmark':bookmark}
        data['html_form'] = render_to_string('main/bookmark/bookmark.html',context,request=request)
    return JsonResponse(data)
URL是:

path('bookmark/<int:id>/<str:obj_type>/', views.add_bookmark,name='add-bookmark'),

提前谢谢

我想你可以通过创建另一条路由来实现,当有人将某个内容添加到书签中并在那里添加“其他”功能时,该路由将被调用

<form class="add-bookmark-form" method="POST">
    {% if request.user has not added object to bookmark %}
    <button class="small dropdown-item" type="submit" data-url="{% url 'main:add-bookmark' id=get_id obj_type=t %}" ><svg class="bi  mr-1 bi-bookmark" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
        <path fill-rule="evenodd" d="M8 12l5 3V3a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v12l5-3zm-4 1.234l4-2.4 4 2.4V3a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v10.234z"/>
      </svg></i>Bookmark</button>
    {% else %}
    <button class="small dropdown-item" type="submit" data-url="{% url 'main:add-bookmark' hid=get_hash obj_type=t %}" ><svg class="bi mr-1 bi-bookmark-fill" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
        <path fill-rule="evenodd" d="M3 3a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v12l-5-3-5 3V3z"/>
      </svg></i>Bookmarked</button>
    {% endif %}
</form>