【发布时间】:2021-12-23 21:46:14
【问题描述】:
我正在尝试将用户与帖子相关联。我有两个模型 students 用于用户,sublists 用于带有 的用户帖子外键(作者)。我正在使用 MySQL 数据库并使用表单将数据存储到其中。当我的 form.author 在我的 HTML 文件中执行时,它会为我提供数据库中所有用户的 id 列表,但我已经登录,我想以登录用户的身份发布而不选择。如果删除它说我的表单无效,这是有道理的,因为我没有输入 form.author。因为我使用的是 MySQL,所以我没有使用内置的用户身份验证方法,而是将电子邮件和密码与登录表单输入。在这方面花费太多时间,但很难解决这个问题。任何帮助将不胜感激
我的 views.py 看起来像这样
def addnew(request):
if request.method == 'POST':
form = Sublist(request.POST)
if form.is_valid():
try:
form.save()
messages.success(request, ' Subscirption Saved')
name = sublist.objects.get(name=name)
return render (request, 'subscrap/main.html', {'sublist': name})
except:
pass
else:
messages.success(request, 'Error')
pass
else:
form = Sublist()
return render(request, 'subscrap/addnew.html', {'form': form})
@login_required(login_url='login')
@cache_control(no_cache=True, must_revalidate=True, no_store=True)
def main(request):
return render(request, 'subscrap/main.html')
def mod(request):
student = students.objects.all()
return render(request, 'subscrap/mod.html' , {'students': student})
我的 Models.py
class students(models.Model):
fname = models.CharField(max_length=50)
lname = models.CharField(max_length=50)
password = models.CharField(max_length = 50 , null = True)
passwordrepeat = models.CharField(max_length = 50, null = True)
email = models.EmailField(max_length=150)
class Meta:
db_table = "students"
class sublist(models.Model):
author = models.ForeignKey(students, related_name='sublist' ,on_delete=models.CASCADE)
name = models.CharField(max_length=150)
cost = models.IntegerField(default = 0)
renewalcycle = models.IntegerField(default = 0)
class Meta:
db_table = "sublist"
因为我使用的是表单,所以这里是我的 forms.py
lass StudentForm(forms.ModelForm):
class Meta:
model = students
fields = "__all__"
class Studentlogin(forms.Form):
email = forms.EmailField(max_length=150)
password = forms.CharField(max_length = 50, widget=forms.PasswordInput)
class Sublist(forms.ModelForm):
class Meta:
model = sublist
fields = "__all__"
【问题讨论】:
-
学生是用户模型吗?
-
@WillemVanOnsem 是的,学生是用户模型
标签: python mysql django django-views