【发布时间】:2019-04-25 02:18:28
【问题描述】:
问题已结束:请参阅 Alasdair 发布的回复以获得解决方案。
我正在将 Pets 实例添加到表中:
class Pet(models.Model):
petName = models.CharField(max_length=100, default='My Pet')
petImage = models.ImageField(default='default.png', blank=True)
author = models.ForeignKey(User, on_delete=models.CASCADE, default=None)
上面的代码很好,但是最后一行的“用户”在下拉菜单中提供了所有曾经在我的应用上注册过的用户(当作为表单查看时)。我希望作者(即登录的用户)自动与这个新的宠物对象关联。
我不知道内置 auth_user 数据库的来龙去脉,所以我不知道如何引用 this 特定的用户实例,即登录的用户。我知道 request.user在其他页面上返回用户登录,我只是不知道如何将该变量输入这个模型。有什么想法吗?
* 更新:包含 views.py *
@login_required(login_url="/accounts/login/")
def add_pet(request):
if request.method == 'POST':
form = forms.AddPet(request.POST, request.FILES)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
return redirect('yourPet')
else:
form = forms.AddPet()
return render(request, 'records/pet_create.html', {'form': form},)
【问题讨论】:
-
嘿 Ålasa,这是一种非常常见的模式。通常您从表单中排除用户字段,并在保存时根据当前登录的用户自动分配。表单是在管理员中还是在您编写的视图中?检查books.agiliq.com/projects/django-admin-cookbook/en/latest/…
-
请显示您的视图/表单,或者如果您使用的是 Django 管理员,请显示您的模型管理员类。
-
你不要在模型中这样做,你在视图中这样做,你没有显示。
标签: django sqlite django-models django-forms django-database