【发布时间】:2018-05-01 01:56:45
【问题描述】:
我有一个模特Pair,还有另一个模特Profile。
模型Pair 的一个实例将使用一个从两个不同的Profile 实例中提取的表单。那么,如何使用来自两个配置文件的信息预填充单个表单?
两种型号:Profile & Pair:
class Profile(models.Model):
...
favorites = models.CharField(max_length=150)
class Pair(models.Model):
requester = models.ForeignKey(Profile)
accepter = models.ForeignKey(Profile)
requester_favorite = models.CharField(max_length=50)
accepter_favorite = models.CharField(max_length=50)
目前的形式:
class PairRequestForm(forms.Form):
your_favorites = forms.CharField(max_length=50)
partners_favorites = forms.CharField(max_length=50)
代码解释:它的工作方式是,用户(requester) 将请求启动与PairRequestForm 的配对到潜在的accepter。
表单应预先填写每个用户的“最爱”。
我不确定如何连接views.py,因为我需要获取两个对象。
class PairRequestView(FormView):
form_class = PairRequestForm
template_name = 'profile/pair_request.html'
success_url = "/"
def is_valid(self, form):
return
注意:必须使用来自Profile 的当前信息预先填充配对表格。但是,表单不会更新任何旧信息(不会更新 save() 任何 Profiles)——它只会创建一个新的 Pair 实例。
【问题讨论】:
-
如果您不更新/编辑表单,为什么还要它?根据您的请求,您可以通过显示相关信息来执行此操作,基于两个配置文件 ID。
-
@Withnail 它没有更新配置文件。然而,它正在创建一个新的 Pair 对象。您能否更具体一点:“根据两个配置文件 ID 显示相关信息”?
-
如果我理解正确 - 您想从列表中选择一个接受者。该提议者/接受者组合然后成为 Pair 对象,对吗?您询问 Forms 的原因是因为您想在选择它们时显示每个提议者/接受者对的收藏夹组合吗?
-
接受者不是从任何列表中选择的——接受者只是恰好在他们的页面上有表单的用户。因此,当提议者在接受者的页面上提交表单时,它们确实会成为一对(在确认后),是的,我想要一个表单,因为该表单还必须显示属于每个用户的收藏夹。
-
好的,现在和你一起!让我输入一下。
标签: django django-models django-forms django-templates django-views