我有一个模型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()
任何Profile
s) - 它只会创建一个新的Pair
实例。
答案 0 :(得分:1)
假设在4.4.2
之类的地方访问了接受者页面,您可以像往常一样从网址捕获接受者的ID。
一些事情 - 您不需要将收藏夹保存到配对模型中,因为对于/profiles/2
模型的任何使用,您只需通过执行
Pair
如果你,提议者,id = 1,并访问我的,接受者的页面(id = 2),那么你可以填写表格 - (我已经很长时间了清楚的方式)
`p = Pair.objects.get(id=1) #or whatever query
p.requester.favourites
> Some of my favourites
p.accepter.favourites
> Some of your favourites.
在accepterobj = Profile.objects.get(id=id_from_url_for_page)
proposerobj = Profile.objects.get(id=request.user.id)
form = PairRequestForm(accepter=accepterobj,
proposer=proposerobj,
accepter_favourites=accepterobj.favourites,
proposerobj_favourites=proposerobj.favourites)
的CBV,you can do the queries above by overriding the get_initial
方法中。
PairRequestView