首页 > 解决方案 > Django 复选框-数据库连接

问题描述

最近我开始学习 Django,我试图通过浏览器访问我的数据库中的 BooleanField

这是我的表格

class NewTopicForm(forms.ModelForm):
 slot1 = forms.BooleanField(required=False)
 slot2 = forms.BooleanField(required=False)
 slot3 = forms.BooleanField(required=False)

 message = forms.CharField(
     widget=forms.Textarea(
         attrs={'rows': 5, 'placeholder': 'explanation'}
     ),
     max_length=4000,
     help_text='The max length of the text is 4000.'
 )

class Meta:
     model = Topic
     fields = ['subject', 'message', 'slot1', 'slot2', 'slot3']`

这是我的看法。当我说“board.slot2 = True”时,它会将我的 slot2 False 更改为 True。但是我如何在浏览器中更改 slot2

@login_required
def new_topic(request, pk):
board = get_object_or_404(Board, pk=pk)
if request.method == 'POST':
    form = NewTopicForm(request.POST)
    if form.is_valid():
        topic = form.save(commit=False)
        topic.board = board
        topic.starter = request.user


        board.slot2 = True
        board.save()
        # board.slot3 = False
        # board.save()

        topic.save()
        Post.objects.create(
            message=form.cleaned_data.get('message'),
            topic=topic,
            created_by=request.user
        )
        return redirect('topic_posts', pk=pk, topic_pk=topic.pk)
else:
    form = NewTopicForm()
return render(request, 'new_topic.html', {'board': board, 'form': form})`

这是我的模型

class Board(models.Model):
name = models.CharField(max_length=30, unique=True)
slot1 = models.BooleanField()
slot2 = models.BooleanField()
slot3 = models.BooleanField()

def __str__(self):
    return self.name

def get_posts_count(self):
    return Post.objects.filter(topic__board=self).count()

def get_last_post(self):
    return Post.objects.filter(topic__board=self).order_by('-created_at').first()`

标签: django

解决方案


推荐阅读