我研究这个问题已经有一段时间了。我的表格一直无效
model.py
class GroupMember(models.Model):
Groupname = models.ForeignKey(DareGroups, on_delete=models.CASCADE)
Username = models.ForeignKey(DareUser, on_delete=models.CASCADE)
IsAdmin = models.BooleanField(default=False)
@receiver(post_save, sender=DareGroups)
def create_GroupAdmin(sender, instance, created, **kwargs):
if created:
GroupMember.objects.create(Groupname=instance,Username=get_current_authenticated_user().dareuser,IsAdmin=True)
#print(instance)
def __str__(self):
return self.Groupname.Groupname + "_"+self.Username.Username.username
view.py
def index(request):
if request.user.is_authenticated==True:
print('we zijn hier 1')
if request.method == "POST":
print('we zijn hier 2')
if 'newgroup' in request.POST:
formgroup = GroupsForm(request.POST)
if formgroup.is_valid():
print('komen we dan hier?')
formgroup.save()
return redirect('index')
elif 'newchallenge' in request.POST:
formchallenge = NewChallengeForm(request.POST)
if formchallenge.is_valid():
formchallenge.save()
return redirect('index')
elif 'addmember' in request.POST:
formaddmember=AddMemberToGroupForm(request.POST)
print('we zijn hier 3')
print(formaddmember.data)
if formaddmember.is_valid():
print('we zijn hier 4')
formaddmember.save()
else:
print('we zijn hier 5')
formaddmember.save()
print(formaddmember.errors)
return redirect('index')
else:
formgroup = GroupsForm()
formchallenge=NewChallengeForm()
formaddmember=AddMemberToGroupForm()
return render(request,"DareU/index.html",{'formgroup':formgroup,'formchallenge':formchallenge,'formaddmember':formaddmember})
else:
return render(request,"DareU/index.html")
forms.py
class AddMemberToGroupForm(forms.ModelForm):
class Meta:
model = GroupMember
fields = ('Groupname', 'Username','IsAdmin')
def __init__(self, user=None, **kwargs):
super(AddMemberToGroupForm, self).__init__(**kwargs)
self.fields['Groupname'].queryset = DareGroups.objects.filter(groupmember__IsAdmin=True)
HTML
<div class='container has-text-left' id="myForm3">
<h2 class="title is-2">Add member to group</h2>
<form method="POST" class="post-form">
{% csrf_token %}
{{ formaddmember.as_p }}
<button type="submit" class="button is-small is-success" name="addmember">Save</button>
<button type="button" class="button is-small is-danger cancel" onclick="closeForm3()">Close</button>
</form>
</div>
所以,我不能通过有效的检查。如果我尝试仅保存,则会出现以下错误:
NOT NULL constraint failed: DareU_groupmember.Username_id
这个形状很好。我可以为groupname和username选择正确的值,但在发布表单时,这些值似乎不知怎么丢失了
所以Harben让我走上了正确的道路,来看看init方法
它是这样重新编写的:
我认为这是因为您没有将*args传递给super(),如果您传递了额外的kwargs,请确保在调用super()之前将它们弹出
相关问题 更多 >
编程相关推荐