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>