如何比较从 html 复选框获得的值与数据库中相同值的 id?

问题描述 投票:0回答:0

我是 Django 的新手,我使用的是 4.2 版本。这是我的问题。我正在建立一个博客网站,我试图为每篇博文添加多个值(标签),从 HTML 模板复选框输入到我的数据库,即 PostgreSQL。在该数据库中,我已经在 Tags 表中预先存储了项目的值。该表与主 Blogpost 类具有多对多关系。但是我在这个特定过程中遇到了问题。我正在尝试从已在标签表中设置的标签中为创建的每个博文添加标签。这个想法是,用户选择他们想要包含在他们的博客文章和 manytomany 表中的标签,在保存博客文章时设置标签和博客文章的 ID。我知道我要获取我试图从存在的数据库中添加的值的 ID,并将它们包含在博文中,但我不知道如何执行此操作。 这是我的代码的样子:

models.py


class BlogPost(models.Model):
    id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key='True', editable=False)
    post_title = models.CharField(max_length=300, blank=True, null=True, verbose_name='Title of blog post')
    post_image = models.ImageField(upload_to='posts/%Y/%m/%d', default='static/images/avatar.jpg', blank=True, null=True, verbose_name='Blog post picture')
    tags = models.ManyToManyField('Tags', blank=True,  verbose_name='Tags seperated by #')



class Tags(models.Model):
    id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True, primary_key=True)
    tag = models.CharField(max_length=200)

views.py

def loadCreatePostPage(request):
    # blogform = BlogForm()
    context = {
        'has_error': False,
        'data': request.POST,
    }
    
    if request.method == 'POST':
        title = request.POST['post_title']
        image = request.FILES.get('post_image')
        # image = request.FILES['post_image']
        add_tag = request.POST.getlist('genre')
        body = request.POST['post_body']


我试图遍历查询集标签,但由于某种未知原因,if 语句没有给出预期的结果:

def loadCreatePostPage(request):
    # blogform = BlogForm()
    context = {
        'has_error': False,
        'data': request.POST,
    }
    
    if request.method == 'POST':
        title = request.POST['post_title']
        image = request.FILES.get('post_image')
        # image = request.FILES['post_image']
        add_tag = request.POST.getlist('genre')
        body = request.POST['post_body']

        print(title,image,add_tag)
        try:
            blog = BlogPost(post_title=title, post_image=image, post_body=body)
            # for tag in range(len(add_tag)):
            #     blog.tags.add(add_tag[tag])
            t_tags = Tags.objects.get(tag='fantasy')
            print(add_tag[0])
            if t_tags == (add_tag[0]):
                return True
            print(t_tags)
            # blog.tags_set.add()

            
            # blog.save()
            # all_tags = Tags.objects.all()
            # all_tags = list(all_tags)
            # for tag in range(len(all_tags)):
            #     # print(tag)
            #     pretag = all_tags[tag]
            #     for x in range(len(add_tag)):
            #         print(add_tag[x])
            #         if add_tag[x] in all_tags:
            #             print('yes')
            #         else:
            #             print('no')

                # print(pretag, type(pretag))
                
                
            # blog.save()
        except ValueError:
            print('Something is wrong')
        
    return render(request, 'blogpages/create.html', context)

我会很感激一些帮助和/或更正,我很困惑

django django-views django-templates many-to-many
© www.soinside.com 2019 - 2024. All rights reserved.