【发布时间】:2021-05-11 20:31:35
【问题描述】:
Account 是我的 AUTH_USER_MODEL,AccountDisplayInfo 包含每个帐户的所有附加显示信息。所以他们可以输入和提交,然后更新他们的信息。这些是我的代码,但我不确定为什么它不起作用。首先,我收到此错误:
DoesNotExist at /account/5/displayinfo/ AccountDisplayInfo matching query does not exist.
其次,“更新”功能不起作用。
models.py
class Account(AbstractBaseUser):
email = models.EmailField(verbose_name="email", max_length=60, unique=True)
username = models.CharField(max_length=30, unique=True)
class AccountDisplayInfo(models.Model):
account = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
instagram = models.CharField(max_length=50, unique=True, blank=True, null=True) #instagram
.html
<form method="POST" enctype="multipart/form-data">{% csrf_token %}
{{ form.as_p }}
<div class="d-flex justify-content-center">
<button type="submit" class="btn btn-primary btn-sm col-lg-5">Update</button>
</div>
</form>
views.py
def display_information_view(request, *args, **kwargs):
user_id = kwargs.get("user_id")
account = Account.objects.get(pk=user_id)
context = {}
displayinfo = AccountDisplayInfo.objects.get(account=account)
if request.POST:
form = DisplayInformationForm(request.POST, request.FILES, instance=request.user)
if form.is_valid():
info = form.save(commit=False)
info.account = request.user
info.save()
messages.success(request, 'Your profile display information have been updated', extra_tags='editdisplayinfo')
return redirect("account:view", user_id=account.pk)
else:
form = DisplayInformationForm(request.POST, instance=request.user,
initial={
"instagram": displayinfo.instagram,
}
)
context['form'] = form
else:
form = DisplayInformationForm(
initial={
"instagram": displayinfo.instagram,
}
)
context['form'] = form
return render(request, "account/displayinfo.html", context)
forms.py
class DisplayInformationForm(forms.ModelForm):
class Meta:
model = AccountDisplayInfo
fields = ('instagram')
另外,如果您能就此提出建议,那就太好了:: 如果我有 2 张桌子。表 1 和表 2。表 2 有表 1 的外键,但表 1 没有表 2 的外键。如何从表 1 中查询表 2 的数据?谢谢
【问题讨论】:
-
您确定已为您的帐户创建了
AccountDisplayInfo实体吗? -
@SLDem 不,我没有兄弟。但是如果我没有创建它,它不应该显示为空白让我填写吗?
-
所以第一次是输入,随后会被认为是更新
-
好的兄弟,我在管理员中尝试过,如果我为此创建了一个条目,它就可以工作。但是,更新不起作用。表单已注册为有效,但我插入的新更新未注册
-
您确定您的表单有效吗?
标签: django django-models django-views django-forms django-templates